Как настроить gradle и студию android для создания сборки релиза?
Я хочу создать приложение для Android и начать подписывать его.
Для этого мне нужно иметь версию apk версии. Документация Google предлагает только Eclipse и ant способы создания релизов: http://developer.android.com/tools/publishing/app-signing.html#releasecompile
Однако я не могу найти, как заставить gradle построить версию apk. build.gradle
не дает никаких намеков. gradlew tasks
предполагает, что нет установленной версии Release configuration, но существует версия удаления:
Install tasks
-------------
installDebug - Installs the Debug build
installTest - Installs the Test build for the Debug build
uninstallAll - Uninstall all applications.
uninstallDebug - Uninstalls the Debug build
uninstallRelease - Uninstalls the Release build
uninstallTest - Uninstalls the Test build for the Debug build
Мой build.gradle
:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
dependencies {
compile 'com.android.support:support-v4:13.0.+'
compile files('libs/android-support-v4.jar')
compile project(":libraries:ActionBarSherlock")
compile project(":libraries:CollabsibleSearchMenu")
}
android {
compileSdkVersion 18
buildToolsVersion "18.0.1"
defaultConfig {
minSdkVersion 8
targetSdkVersion 16
}
}
Что мне не хватает?
Ответы
Ответ 1
В последней версии Android Studio вы можете просто сделать:
./gradlew assembleRelease
или aR
для краткости. Это произведет неподписанный выпуск apk. Создание подписанного apk может быть сделано аналогичным образом или вы можете использовать Build → Generate Signed Apk в Android Studio.
Смотрите документы здесь
Вот мой build.gradle для справки:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
buildTypes {
release {
}
}
Ответ 2
- откройте панель
Build Variants
, обычно расположенную вдоль левой нижней части окна:
![Build Variants]()
- установите
debug
на release
shift+f10
беги !!
Затем Android Studio выполнит задачу assembleRelease
и установит xx-release.apk на ваше устройство.
Ответ 3
Не нужно обновлять gradle для создания приложения выпуска в студии Android. Если вы были пользователем eclipse, вам будет так легко. Если вы новичок, то выполните шаги
1: перейдите в раздел "Сборка" в разделе панели инструментов.
2: Выберите опцию "Создать подпись APK...".
![enter image description here]()
3: заполните открытую форму и идите дальше
4: если у вас уже есть .keystore или .jks, тогда выберите этот файл, введите свой пароль и псевдоним и соответствующий пароль.
5: Или у вас нет файла .keystore или .jks, затем нажмите кнопку "Создать новый...", как показано на рис. 1, затем заполните форму. ![enter image description here]()
Выше был процесс создания вручную. Если вы хотите, чтобы студия Android Android автоматически подписывала ваше приложение
В Android Studio вы можете настроить свой проект для автоматической подписки APK в процессе сборки:
В браузере проекта щелкните правой кнопкой мыши на своем приложении и выберите "Открыть настройки модуля".
В окне "Структура проекта" выберите модуль приложения в разделе "Модули".
Перейдите на вкладку "Подписание".
Выберите файл хранилища ключей, введите имя для этой конфигурации подписи (так как вы можете создать несколько) и введите необходимую информацию.
Рисунок 4. Создание конфигурации подписи в Android Studio.
Перейдите на вкладку Типы построек.
Выберите сборку выпуска.
В разделе "Настройка подписки" выберите конфигурацию подписи, которую вы только что создали.
Рисунок 5. Выберите конфигурацию подписи в Android Studio.
4: Самое важное, что делает debuggable = false в gradle.
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard- android.txt'), 'proguard-rules.txt'
debuggable false
jniDebuggable false
renderscriptDebuggable false
zipAlignEnabled true
}
}
посетите дополнительную информацию developer.android.com
Ответ 4
Чтобы активировать задачу installRelease
, вам просто нужно signingConfig
. Это все.
Из http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Android-tasks:
Наконец, плагин создает задачи установки и удаления для всей сборки типы (отладка, выпуск, тест), если они могут быть установлены ( требует подписания).
Вот что вы хотите:
Install tasks
-------------
installDebug - Installs the Debug build
installDebugTest - Installs the Test build for the Debug build
installRelease - Installs the Release build
uninstallAll - Uninstall all applications.
uninstallDebug - Uninstalls the Debug build
uninstallDebugTest - Uninstalls the Test build for the Debug build
uninstallRelease - Uninstalls the Release build <--- release
Вот как получить задачу installRelease
:
Пример build.gradle
:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion '22.0.1'
defaultConfig {
applicationId 'demo'
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName '1.0'
}
signingConfigs {
release {
storeFile <file>
storePassword <password>
keyAlias <alias>
keyPassword <password>
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}