几天前我开始使用 Gradle 构建系统,并让脚本按我的意愿工作,这里是:
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 秒后将我的 apk 放在 build 文件夹中。但问题是生成了我不想要的其他文件,例如 appname-release-unaligned.apk。
我知道在签署 apk 之前需要此文件,但想在我的 gradle 脚本中添加删除这些文件的任务?
另外,如果可能的话,我想删除在构建过程中生成的所有其他(shell 我说的是人工制品文件)。本质上,我想运行类似 gradle clean 之类的东西,但保留构建 apk 文件。我该怎么做呢?
奖励:如果有人有关于如何优化此脚本并启用 zip align 和 proguard(没有自定义规则,只是默认混淆是可以的)的指针,这也会对我有所帮助,因为我对 gradle 非常陌生,而且我遵循的教程都没有解释这些脚步。