是否可以在文件中指定某些信息(例如API密钥),然后以某种方式将这些信息注入AndroidManifest
文件中(也许在构建过程中)?
对于我的特定用例,react-native-maps
的documentation要求将Google Maps API密钥添加到AndroidManifest
文件。但是,我想将敏感信息保留在AndroidManifest
文件之外(例如,保留在最终将成为gitignored
的文件内)。
顺便提一句,从this question看来,AndroidManifest
内的所有信息都可用于同一设备上的所有程序包。这仍然是真的吗?
最佳答案
如果仅在清单中需要此信息,则可以在build.gradle
文件中定义manifest placeholders并使用清单中的${}
宏语法引用它们。
如果其他地方可能需要该信息,请考虑使用在resConfig
文件中通过build.gradle
创建的字符串资源。
在足够的Gradle / Groovy / Java编码下,build.gradle
文件可以通过一些对服务器的API调用,从某个定制属性文件gradle.properties
中获取实际值,或者通过其他方式获取实际值。通常,我在gradle.properties
中列出了.gitignore
,因此我将这种内容放入其中,尽管我不确定这种方法是否是常见做法。
似乎AndroidManifest内部的所有信息都可用于同一设备上的所有程序包。这仍然是真的吗?
“全部”是一个强大的术语,但是我想说清单中的绝大多数信息都可以通过PackageManager
看到。有时,它不能直接访问(例如,我不记得一种获取组件的<intent-filter>
列表的方法),但是如果找到正确的方法,它仍然存在。