【发布时间】:2015-03-03 18:35:29
【问题描述】:
我和几个同事正在构建一个应用程序并使用 git 进行版本控制。
我们的应用使用了 Google Maps Api,它根据 SHA1 证书生成唯一的 api 密钥。要使用地图,必须在清单中引用 api 键
....
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="api_key_goes_here"/>
</application>
我们每个人都根据我们个人机器上的应用程序构建生成了自己的 api 密钥,但我们希望在我们的每台机器上都有一个属性文件,而不是检查到版本控制中,该文件存储我们唯一的 api 密钥,所以每次从存储库中提取时,我们不必手动更改清单中的 api 密钥。
这可能吗?我知道 android studio 中有属性文件,但我不知道如何使用它们,尤其是在这种情况下。
编辑:
完整清单:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:name=".Application">
<activity android:name="com.misfiremedia.parseexperiment.app.DispatchActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.misfiremedia.parseexperiment.app.SignUpActivity">
</activity>
<activity
android:name="com.misfiremedia.parseexperiment.app.WelcomeActivity"
android:configChanges="orientation|keyboardHidden"/>
<activity
android:name=".EmailLogInActivity"
android:configChanges="orientation|keyboardHidden"/>
<activity
android:name="com.misfiremedia.parseexperiment.app.HomeActivity"
android:configChanges="orientation|keyboardHidden"/>
<activity
android:name="com.misfiremedia.parseexperiment.app.home.PostLocationActivity"
android:configChanges="orientation|keyboardHidden"/>
<activity
android:name=".NewPostActivity"
android:configChanges="orientation|keyboardHidden"/>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="THIS_IS_THE_KEY_WE_NEEDED_TO_HAVE_DIFFERENT"/>
</application>
【问题讨论】:
-
我认为更好的方法是使用您的构建系统将属性插入清单文件(不依赖 IDE)。
-
@jangroth 听起来不错。你能指出我做这件事的正确方向吗?
标签: android git version-control android-studio android-gradle-plugin