Кажется, что Gradle потерял тип сборки в проекте, над которым я работаю. Я могу воссоздать минимальную проблему следующим образом. У меня есть следующие файлы:
build.gradle local.properties src/main/AndroidManifest.xml
build.gradle:
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:+' } } apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { minSdkVersion 1 targetSdkVersion 23 } buildTypes { debug { } release { } } }
local.properties:
sdk.dir=/path/to/android-sdk-linux
SRC / Основной / AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="example"/>
Я ожидал бы, что Gradle будет генерировать задачи installDebug
и installRelease
, поскольку я определяю debug
и release
как buildTypes
. Однако это не так. gradle tasks
команды производят:
:tasks ------------------------------------------------------------ All tasks runnable from root project ------------------------------------------------------------ ... Install tasks ------------- installDebug - Installs the Debug build. installDebugAndroidTest - Installs the android (on device) tests for the Debug build. uninstallAll - Uninstall all applications. uninstallDebug - Uninstalls the Debug build. uninstallDebugAndroidTest - Uninstalls the android (on device) tests for the Debug build. uninstallRelease - Uninstalls the Release build. Verification tasks ------------------ ...
Что происходит не так? Почему не установлена installRelease
?
Для начала сначала вам нужно создать keystore
в корневом проекте. И вам нужно предоставить эти детали в build.gradle.
Вы можете создать два отладки и отладки signingConfigs
если хотите.
Наконец, в buildTypes
ссылается на это.
android { signingConfigs { debug { keyAlias 'alias' keyPassword 'password' storeFile file('../xyz.jks') storePassword 'password' } } compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { minSdkVersion 1 targetSdkVersion 23 } buildTypes { debug { signingConfig signingConfigs.debug } release { signingConfig signingConfigs.debug } }
Тогда installRelease
будет доступна в программе gradle
Task
Надеюсь, это будет полезно для вас.
Для случая с краем, когда вы не собираетесь публиковать приложение (например, тестирование запущенного apk), вы можете пропустить подпись с помощью производственного ключа и сделать еще проще:
android { signingConfigs { debug {} } buildTypes { debug { signingConfig signingConfigs.debug } release { signingConfig signingConfigs.debug } }