Android Studio: как создать второй тип сборки отладки

Я хочу создать второй тип сборки, который должен работать точно так же, как уже существующий тип отладки. В настоящее время у меня есть два типа сборки: debug и release. Отладочную можно запускать одним щелчком мыши и автоматически подписываться с хранилищем отладки. Я вручную компилирую сборку выпуска с помощью мастера Build -> Generate signed APK .

Таким образом, чтобы клонировать тип сборки отладки, я сначала добавил второй тип сборки с именем «local» в файл build.graddle приложения:

 buildTypes { ... debug { debuggable true minifyEnabled false } local { debuggable true minifyEnabled false } } 

Затем я создал app/src/local/res и добавил некоторые файлы.

Затем я выполняю повторную перестройку градиента и выбираю новый тип сборки на левой вкладке: Закладка типа сборки

Наконец, я нажимаю кнопку запуска, и я ожидал, что она просто сработает. В этой статье справки IntelliJ говорится, что настройка подписи отладки по умолчанию:

Это означает, что если вы не настроите артефакт вручную и выберите опцию Развернуть по умолчанию APK в диалоговом окне «Запуск / отладка конфигурации: приложение для Android», IntelliJ IDEA будет использовать предопределенные значения в сертификате для сгенерированного

Вместо этого отображается следующее диалоговое окно:

Диалог запуска

Когда я нажимаю кнопку «Исправить», он открывает диалог настройки подписки для всего модуля приложения. Тем не менее, я не хочу подписывать этот apk для выпуска, мне нужно, чтобы он был подписан с сертификатом debug. Кроме того, я заметил, что была создана новая задача assembleLocal gradle, но она генерирует невыровненный apk. В этой папке я вижу, что регулярные отладочные apks генерируются правильно в их неизмененных и окончательных версиях.

Как на Земле я могу просто клонировать тип сборки отладки?

Solutions Collecting From Web of "Android Studio: как создать второй тип сборки отладки"

Кроме того, вы можете сделать свой тип сборки похожим на отладку, используя:

 initWith(buildTypes.debug) 

Вот пример:

 ... buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' buildConfigField 'String', 'URL_API_BASE_SERVICE', '"http://theidasworld.com"' } debug { buildConfigField 'String', 'URL_API_BASE_SERVICE', '"http://debug.theidasworld.com"' } inspection { initWith(buildTypes.debug) buildConfigField 'String', 'URL_API_BASE_SERVICE', '"http://inspection.theidasworld.com"' } } ... 

Вы можете указать в файле build.gradle который следует использовать для соединения с buildType с buildType .

Чтобы подписываться с использованием того же самого параметра buildType , как и buildType debug buildType по умолчанию, используйте следующее:

 buildTypes { local { signingConfig signingConfigs.debug } /* NOTE: the debug block is not required because it is a default * buildType configuration; all of its settings are defined implicitly * by Android Studio behind the scenes. */ } 

Если вы предпочитаете использовать пользовательское хранилище ключей, расположенное в вашей локальной системе, используйте вместо этого следующее:

 signingConfigs { local { storeFile file("/path/to/custom.keystore") storePassword "password" keyAlias "MyLocalKey" keyPassword "password" } } buildTypes { local { signingConfig signingConfigs.local } } 

Другим способом может быть использование ароматов.

Пример:

 producFlavors{ app1{} app2{} }