是否可以在文件中指定某些信息(例如API密钥),然后以某种方式将这些信息注入AndroidManifest文件中(也许在构建过程中)?

对于我的特定用例,react-native-mapsdocumentation要求将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>列表的方法),但是如果找到正确的方法,它仍然存在。

10-07 20:04
查看更多