В Android Studio есть концепция типов сборки и вкусов, и вы можете использовать их, чтобы получить то, что вам нужно. Типы сборки - это разные версии приложения, которые функционально идентичны, но могут отличаться от кода отладки. По умолчанию все проекты Android Gradle имеют варианты отладки и выпуска.
Ароматизаторы - это версии вашего приложения, которые функционально отличаются друг от друга; например, у вас могут быть бесплатные и оплаченные. По умолчанию у ваших проектов Android Gradle нет вкусов, но вы можете их добавить.
Виды сборки и ароматизаторы объединены (в так называемом варианте ), когда вы делаете сборку; в этом примере вы можете иметь freeDebug, freeRelease, paidDebug и paidRelease.
Система сборки позволяет легко переопределить ряд вещей в каждом типе/вкусе/варианте; одна из вещей, которую вы можете сделать, - это переопределить части файла AndroidManifest.xml. Система сборки объединяет различные допустимые бит манифеста в один мастер-манифест, когда он создает конкретный вариант.
С учетом этого фона в вашем случае вы можете захотеть иметь другой ключ API в отладочной версии вашего приложения по сравнению с версией выпуска. Отладочная версия - это то, что вы будете использовать в своей повседневной разработке, отладке и тестировании, а версия выпуска - это то, что вы хотите развернуть для пользователей.
Чтобы сделать это, не положил ключ API Карт Google в файле AndroidManifest.xml главного приложения в src/main
; вместо этого добавьте две новые папки, src/debug
и src/release
и добавьте stub Файлы AndroidManifest.xml. Не включайте полную информацию в эти новые манифесты, но только то, что уникально в том, что необходимо для этого конкретного варианта. Ваши файлы будут выглядеть следующим образом:
Файл src/debug/AndroidManifest.xml
будет содержать это:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="[MY_DEV_KEY]" />
</manifest>
и src/release/AndroidManifest.xml
будет иметь это:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="[MY_PROD_KEY]" />
</manifest>
Повторим, не поместите любой ключ API в файл src/main/AndroidManifest.xml
.
Если по какой-то причине вы не хотите использовать типы построения для дифференциации, вы можете настроить ароматы dev и prod и разбить их таким образом; Подобным образом работает манифеста.
Чувак именно то, что мне было нужно, хороший вопрос. – Radu