44

プロジェクトで Google Maps v2 API を使用しています。Google マップ v2 では、デバッグ/リリース API キーは で定義されていAndroidManifest.xmlます。リンクを見たことがありますが、そのマップ キーは .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"/>

リリースモードの場合:

<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="@string/release_map_api_key"/>
4

4 に答える 4

68

build.gradle の使用

buildTypes {

    debug {
        buildConfigField("String", "map_api_key", "\"your debug map api key here\"")
    }
    release {
        buildConfigField("String", "map_api_key", "\"your release map api key here\"")
    }
}

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

Google Developer API コンソールで

  1. クリックCreate New Android key...
  2. cmd.exe/ターミナル: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"/>
于 2013-06-17T06:35:55.127 に答える
32

最新の Android 5.0 および Android 6.0、Android 9+ (API 20、21、22、23、24、25、26、27、28、29) で build.gradle ファイルを使用する最良の方法の 1 つ

で製品フレーバーを作成しなくても、簡単に使用できますgradle。これは、 を介して実現できる別の例Gradleです。2 つの簡単な手順でそれを実現できます。

  • カスタム値をmanifestplaceholdersbuild.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 フォームおよび Xamarin ネイティブ アプリについては、2018 年 5 月 3 日に更新

Android 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" />
于 2016-09-01T07:49:51.840 に答える
16

個別のキーを維持する必要がある組織では、Android Studio の個別のディレクトリにそれらを配置できます。使用するサブディレクトリがsrcフレーバーまたはbuildType

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>
于 2014-08-12T18:00:26.947 に答える