web-dev-qa-db-ja.com

Android:デバッグ/リリースMaps v2 APIキーを自動的に選択しますか?

プロジェクトで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"/>
42
Kirit Vaghela

この手順を使用してこの問題を解決しました。

Google Developer API Consoleで

  1. クリック Create New Android key...
  2. Cmd.exe/Terminal:keytool -list -v -keystore mystore.keystore
  3. パスワード:Android
  4. デバッグ用にSHA1 key;package nameと入力し、Enterを押します
  5. リリース用にSHA1 key;package nameと入力します
  6. クリック Create

次に、このAPIキーをプロジェクトに使用します

<meta-data
    Android:name="com.google.Android.maps.v2.API_KEY"
    Android:value="@string/common_map_api_key"/>
66
Kirit Vaghela

最新のAndroid 5.0およびAndroid 6.0(API 20、21,22,23)でbuild.gradleファイルを使用する最良の方法の1つ

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)


Xamarin FormおよびXamarin Native Apps向けに2018年5月3日に更新

開いた 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" />
25
Zumry Mohamed

個別のキーを維持する必要がある組織の場合、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>
15
Robert Karl

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つしかなく、ビルドタイプに基づいて値を設定します。お役に立てれば。

7
Shirish Herwade