Подтвердить что ты не робот

Android: автоматически выбирает debug/release Maps v2 api key?

Я использую API Google Maps v2 в своем проекте. В 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"/>

Если режим выпуска:

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

Ответ 1

Я решил эту проблему, используя следующие шаги:

В консоли API разработчика Google

  • Нажмите Create New Android key...
  • В cmd.exe/Terminal: keytool -list -v -keystore mystore.keystore
  • Пароль: android
  • Теперь введите SHA1 key;package name для отладки и нажмите enter
  • Введите SHA1 key;package name для выпуска
  • Нажмите Create

Теперь используйте этот ключ API вашего проекта

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

Ответ 2

Один из лучших способов использования файла build.gradle в последних версиях Android 5.0 и Android 6.0 (API 20, 21,22,23)

Ну, вы можете использовать их просто, не создавая вкусов продукта в 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)

Ответ 3

Для организаций, которым необходимо поддерживать отдельные ключи, вы можете поместить их в отдельные каталоги в 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>

Ответ 4

Поскольку вы используете 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, и вы устанавливаете значение на основе вашего типа сборки. Надеюсь, это поможет.