我正在尝试构建一个使用Google Map API的android应用程序,我想将此项目放在GIT上。因此,我有一个API密钥,并且此信息在AndroidManifest.xml中是这样的(我已*key*
在此处替换了我的实际API密钥
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value= *key* />
我不希望在git上推送此敏感信息,但是我不能gitignore这个文件。是否可以制作另一个具有密钥的XML文件,并使AndroidManfiest.xml从那里获取(以便我可以gitignore这个文件)?
AndroidManifest.xml具有以下代码
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps"
android:launchMode="singleTop" />
而且我注意到,label属性是从位于res / values / strings.xml中的另一个XML文件获取其值的,因此:
label
@
意思res
文件夹中?您应该能够将秘密字符串放入其自己的XML文件中,并将该文件添加到gitignore中。然后,您可以在中引用字符串AndroidManifest.xml
。
例:
app/src/main/res/values/secrets.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="google_api_key">abcdefg-12345</string>
</resources>
app/src/main/AndroidManifest.xml
<manifest ...>
<application ...>
...
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_api_key" />
...
</application>
</manifest>
回答您的问题:任何Android XML文件(例如AndroidManifest.xml,layout和其他文件)都将属性值解释为原始字符串,除非它以开头@
。该@
前缀告诉它来查找资源。@string
表示字符串资源,@layout
表示布局,@drawable
表示可绘制,@id
表示ID等。这些资源通常在各自的文件中定义,但并不总是如此。无论如何,该文件始终位于的子目录中res
。对于您的情况,字符串在中定义res/values/some_file.xml
。您可以在其中创建任意数量的文件,res/values
并且在AAPT编译步骤中将所有这些文件的内容合并在一起,因此无论文件名如何,都可以通过定义的名称引用其中的任何文件。
请查看https://developer.android.com/guide/topics/manifest/meta-data-element以获得有关<meta-data>
标记的更多信息,以及https://developer.android.com/guide/topics/resources/string-resource以获得更多信息。字符串资源的信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句