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