我想在我的Android库的发布版本上运行ProGuard。下面是我项目中的build.gradle
文件。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android-library'
repositories {
mavenCentral()
}
android {
compileSdkVersion 18
buildToolsVersion "18.0.1"
defaultConfig {
minSdkVersion 10
targetSdkVersion 18
}
sourceSets {
main {
java {
srcDir 'src/main/java'
}
resources {
srcDir 'src/../lib'
}
}
}
buildTypes {
release {
runProguard true
proguardFile getDefaultProguardFile('proguard-android.txt')
}
}
}
运行gradlew clean
或gradlew build
会返回以下错误:
> Could not find method buildTypes() for arguments [build_25r1m0a3etn5cudtt5odlegprd$_run_closure2_closure10@5f3306ad] on project
似乎插件android-library
缺少buildTypes
方法。如果我将apply plugin
更改为android
,则gradlew
会成功运行。但是,这是一个图书馆项目,我想保持这样。我的gradle.build
的其他部分(这里没有提到)依赖于项目是一个库。
有没有办法让android-library
插件在构建时运行ProGuard?
答案 0 :(得分:2)
从release
中取出buildTypes
,解决了我的问题:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android-library'
repositories {
mavenCentral()
}
android {
compileSdkVersion 18
buildToolsVersion "18.0.1"
defaultConfig {
minSdkVersion 10
targetSdkVersion 18
}
sourceSets {
main {
java {
srcDir 'src/main/java'
}
resources {
srcDir 'src/../lib'
}
}
}
release {
runProguard true
proguardFile getDefaultProguardFile('proguard-android.txt')
proguardFile 'proguard-android.txt'
}
}
另请注意,我在proguardFile
下添加了另一个release
。这解决了解决初始buildTypes
问题后我遇到的另一个问题。