将信息从其他文件导入AndroidManifest

时间:2016-10-15 15:45:08

标签: android android-manifest

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

对于我的特定用例,react-native-maps的{​​{3}}要求在AndroidManifest文件中添加Google Maps API密钥。但是,我希望将敏感信息保留在AndroidManifest文件之外(例如,在最终将为gitignored的文件中)。

在旁注,来自documentation,似乎AndroidManifest内的所有信息都可用于同一设备上的所有软件包。这仍然是真的吗?

1 个答案:

答案 0 :(得分:2)

如果清单中只需要信息,您可以在build.gradle文件中定义manifest placeholders,并使用清单中的${}宏语法引用它们。

如果其他地方可能需要这些信息,请考虑在resConfig文件中使用通过build.gradle创建的字符串资源。

如果有足够的Gradle / Groovy / Java编码,build.gradle文件可以从gradle.properties,自定义属性文件,通过一些API调用到服务器或其他任何你想要的内容中提取实际值。通常情况下,gradle.properties中列出了.gitignore,因此我将此类内容放在那里,但我不确定这种方法是否是常见做法。

  

似乎AndroidManifest中的所有信息都可用于同一设备上的所有软件包。这仍然是真的吗?

&#34;所有&#34;这是一个强有力的术语,但我想说清单中的绝大多数信息都可以通过PackageManager看到。有时,它无法直接访问(例如,我不记得获取组件的<intent-filter>列表的方法),但如果找到正确的方法,它仍然存在得到它。