2016-10-15 21 views
1

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

对于我的特殊用例,documentation对于react-native-maps需要将Google Maps API密钥添加到AndroidManifest文件中。但是,我想保留AndroidManifest文件中的敏感信息(而不是在文件中,例如最终将为gitignored)。

从附注this question可以看出,AndroidManifest中的所有信息都可用于同一设备上的所有软件包。这仍然是真的吗?

回答

2

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

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

build.gradle文件可以从gradle.properties(一个自定义属性文件),通过对服务器的某个API调用或其他任何您想要的,在给定足够的Gradle/Groovy/Java编码的情况下获取实际值。通常,我在.gitignore中列出了gradle.properties,所以我把这种东西放在那里,但我不确定这种做法是否是常见做法。

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

“全部”是一个很强的术语,但是我想说清单中绝大多数信息通过PackageManager可见。有时,它不是直接可访问的(例如,我不记得获得组件的<intent-filter>列表的方式),但是如果找到正确的方法,它仍然存在。