我在我的项目中使用了谷歌地图v2应用编程接口。在Google Maps中,调试/发布v2密钥是在AndroidManifest.xml中定义的。我见过the link,但在映射中,键是在xml布局文件中定义的,而不是在AndroidManifest.xml中定义的。那么,我是否可以在AndroidManifest.xml中为我的项目同时定义调试密钥和发布密钥呢
我想在AndroidManifest.xml中实现这样的功能
如果是调试模式:
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/debug_map_api_key"/>如果是释放模式:
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/release_map_api_key"/>发布于 2016-09-01 15:49:52
在最新的安卓5.0和安卓6.0中使用build.gradle文件的最佳方式之一,安卓9+ (API 20,21,22,23,24,25,26,27 28,29)
您可以简单地使用它们,而不需要在gradle中创建产品风格。这是我们可以通过Gradle实现的另一个示例。只需两个简单的步骤即可实现。
manifestplaceholders build.gradle文件。见下文
buildTypes {
debug {
manifestPlaceholders = [ mapApiKeyValue:"GHjaSyAjlyp3O831lgaonHMXsd-_DpQ3002x3S4"]
}
release {
manifestPlaceholders = [ mapApiKeyValue:"AIzaSyAuMGDLr2HeuRed4JA0CrdYYdZRjeC3EA"]
}
}我的清单文件的一部分
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="${mapApiKeyValue}" />此解决方案适用于最新的Android 5.0和Android 6.0 (API 20、21、22、23)
Xamarin Form和Xamarin Native Apps于2018年5月3日更新
在安卓项目中打开AssemblyInfo.cs并添加以下代码
#if DEBUG
[assembly: MetaData("com.google.android.maps.v2.API_KEY", Value = "DebugKey123123123")]
#else
[assembly: MetaData("com.google.android.maps.v2.API_KEY", Value = "ReleaseKey123123123")]
#endif要检查AndroidManifest文件,请转到obj/Debug/android文件夹并打开清单文件,然后检查元信息。
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="DebugKey123123123" />发布于 2014-08-13 02:00:27
对于需要维护单独密钥的组织,您可以将它们放在Android Studio中的单独目录中。确保您使用的src的子目录与某种风格或buildType相匹配
来自Building Your Project with Gradle
To build each version of your app, the build system combines source code and resources from:
src/main/ - the main source directory (common to all variants)
src/<buildType>/ - the build type source directory
src/<flavorName>/ - the flavor source directory在projectroot/yourapp/build.gradle中
buildTypes {
debug {
runProguard false
debuggable true
}
release {
runProguard true
debuggable false
...
}在projectroot/yourapp/src/main/AndroidManifest.xml中
...
<application
android:name=".MyApplication"
android:theme="@style/Theme">
<!-- Don't put your key here -->
...在projectroot/yourapp/src/debug/AndroidManifest.xml中,完全限定应用程序的名称。
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application android:name="com.hipmunk.android.HipmunkApplication">
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="yourdebugkey" />
</application>
</manifest>在projectroot/yourapp/src/release/AndroidManifest.xml中
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application android:name="com.hipmunk.android.HipmunkApplication">
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="release key" />
</application>
</manifest>发布于 2017-06-22 19:46:01
由于您使用的是gradle,因此可以执行以下操作:
build.gradle
android {
.. .. ...
buildTypes {
debug {
resValue "string", "google_maps_api_key", "[YOUR DEV KEY]"
}
release {
resValue "string", "google_maps_api_key", "[YOUR PROD KEY]"
}
}
}在你的AndroidManifest.xml中
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_maps_api_key"/>这样,您只有一个AndroidManifest.xml,并根据您的构建类型设置值。希望这能有所帮助。
https://stackoverflow.com/questions/17141008
复制相似问题