プロジェクトでGoogle Maps v2 APIを使用しています。 Google Maps v2では、デバッグ/リリースAPIキーはAndroidManifest.xml
で定義されています。 リンク を見ましたが、そのマップキーはAndroidManifest.xml
ではなく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"/>
この手順を使用してこの問題を解決しました。
Google Developer API Consoleで
keytool -list -v -keystore mystore.keystore
Android
SHA1 key;package name
と入力し、Enterを押しますSHA1 key;package name
と入力します次に、このAPIキーをプロジェクトに使用します
<meta-data
Android:name="com.google.Android.maps.v2.API_KEY"
Android:value="@string/common_map_api_key"/>
gradle
で製品フレーバーを作成せずに、単純に使用できます。これは、Gradle
を介して達成できる別の例です。 2つの簡単な手順でそれを達成できます。
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)
開いた AssemblyInfo.cs
in 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
AndroidManifestファイルを確認するには、obj/Debug/Android
フォルダを開き、マニフェストファイルを開いてメタ情報を確認します。
<meta-data
Android:name="com.google.Android.maps.v2.API_KEY"
Android:value="DebugKey123123123" />
個別のキーを維持する必要がある組織の場合、Android Studio。使用するsrc
のサブディレクトリがフレーバーまたはbuildType
From 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>
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が1つしかなく、ビルドタイプに基づいて値を設定します。お役に立てれば。