2016-10-15 20 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>列表的方式),但是如果找到正確的方法,它仍然存在。