Я начал использовать систему сборки Gradle несколько дней назад и получил script для работы так, как я хотел, вот он:
buildscript {
repositories {
mavenCentral()
}
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 17
buildToolsVersion '18.0.1'
productFlavors {
flavor1 {
packageName "flavor1"
}
flavor2 {
packageName "flavor2"
}
flavor3 {
packageName "flavor3"
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
signingConfigs {
release {
storeFile file("test.keystore")
storePassword "*****"
keyAlias "****"
keyPassword "*****"
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
}
Как вы можете видеть, здесь нет ничего фантастического, просто создавая 3 варианта приложения и подписывая их одним и тем же ключом. Я просто запускаю Gradle assembleRelease и через 20 секунд у меня есть apks в папке сборки. Но проблема в том, что есть другие файлы, которые мне не нужны, например appname-release-unaligned.apk.
Я знаю, что этот файл необходим до того, как apk может быть подписан, но хотел бы добавить задачу для удаления этих файлов в моем Gradle script?
Также, если это возможно, я хотел бы удалить все остальные (shell я говорю файлы артефакта), созданные во время сборки. По сути, я хотел бы запустить что-то вроде Gradle clean, но оставить файлы сборки apk. Как это сделать?
БОНУС: Если у кого-то есть указатели на то, как я могу оптимизировать этот script и включить zip-align и proguard (без пользовательских правил просто по умолчанию obfuscation в порядке), что также поможет мне, так как я очень новичок в Gradle и ни один из приведенных ниже руководств объясняет эти шаги.