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 и добавил некоторые файлы.

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

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

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

Вместо этого показано это диалоговое окно:

запустить диалог

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

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

Ответ 1

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

Чтобы подписать с помощью того же signingConfig в качестве отладки по умолчанию 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
    }
}

Ответ 2

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

initWith(buildTypes.debug)

Вот пример:

...
buildTypes {

    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        buildConfigField 'String', 'URL_API_BASE_SERVICE', '"http://theidasworld.com"'
    }
    debug {
        versionName 'APP BETA'
        buildConfigField "Integer", "PIN", "0000"  
        buildConfigField 'String', 'URL_API_BASE_SERVICE', '"http://debug.theidasworld.com"'
    }
    inspection {
        initWith(buildTypes.debug) // keep versionName and PIN from 'debug'
        buildConfigField 'String', 'URL_API_BASE_SERVICE', '"http://inspection.theidasworld.com"'
    }
}
...

Ответ 3

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

productFlavors {

  app1 {}

  app2 {}

}