Kir*_*ela 43 android google-maps key android-manifest google-maps-android-api-2
我在我的项目中使用Google Maps v2 API.在Google Maps v2中,调试/发布API密钥定义于AndroidManifest.xml
.我已经看到了链接,但在该映射键中是在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"/>
Run Code Online (Sandbox Code Playgroud)
如果发布模式:
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/release_map_api_key"/>
Run Code Online (Sandbox Code Playgroud)
Kir*_*ela 66
我使用以下步骤解决了这个问题:
在Google Developer API控制台中
keytool -list -v -keystore mystore.keystore
android
SHA1 key;package name
debug并按Enter键SHA1 key;package name
发布现在使用这个API密钥你的项目
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/common_map_api_key"/>
Run Code Online (Sandbox Code Playgroud)
Zum*_*med 25
那么你可以简单地使用它们而不会产生产品风味gradle
.这是我们可以通过的另一个例子Gradle
.您可以通过两个简单的步骤实现它.
manifestplaceholders
build.gradle文件.见下文
buildTypes {
debug {
manifestPlaceholders = [ mapApiKeyValue:"GHjaSyAjlyp3O831lgaonHMXsd-_DpQ3002x3S4"]
}
release {
manifestPlaceholders = [ mapApiKeyValue:"AIzaSyAuMGDLr2HeuRed4JA0CrdYYdZRjeC3EA"]
}
}
Run Code Online (Sandbox Code Playgroud)
我的清单文件的一部分
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="${mapApiKeyValue}" />
Run Code Online (Sandbox Code Playgroud)
此解决方案适用于最新的Android 5.0和Android 6.0(API 20,21,22,23)
AssemblyInfo.cs
在Android Project中打开 并添加以下代码
#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
Run Code Online (Sandbox Code Playgroud)
要检查AndroidManifest文件,请转到obj/Debug/android
文件夹并打开清单文件并检查元信息,
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="DebugKey123123123" />
Run Code Online (Sandbox Code Playgroud)
Rob*_*arl 15
对于需要维护单独密钥的组织,您可以将它们放在Android Studio的单独目录中.确保src
您使用的子目录与flavor或buildType
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
Run Code Online (Sandbox Code Playgroud)
在projectroot/yourapp/build.gradle
:
buildTypes {
debug {
runProguard false
debuggable true
}
release {
runProguard true
debuggable false
...
}
Run Code Online (Sandbox Code Playgroud)
在projectroot/yourapp/src/main/AndroidManifest.xml
:
...
<application
android:name=".MyApplication"
android:theme="@style/Theme">
<!-- Don't put your key here -->
...
Run Code Online (Sandbox Code Playgroud)
在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>
Run Code Online (Sandbox Code Playgroud)
在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>
Run Code Online (Sandbox Code Playgroud)
由于您使用的是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]"
}
}
}
Run Code Online (Sandbox Code Playgroud)
并在您的AndroidManifest.xml中
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_maps_api_key"/>
Run Code Online (Sandbox Code Playgroud)
这样,您只有一个AndroidManifest.xml,并根据您的构建类型设置值.希望这可以帮助.
归档时间: |
|
查看次数: |
24110 次 |
最近记录: |