Gradle и proguard: не удалось найти метод runProguard() для аргументов [true]
Я настроил build.gradle, как было предложено Proguard Gradle manual
Это root build.gradle
buildscript {
repositories {
flatDir dirs: '/home/username/android-sdks/tools/proguard/lib'
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
classpath ':proguard'
}
}
Теперь это build.gradle для моего проекта
apply plugin: 'android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':SomeLibraryProject')
}
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
sourceSets {
...
}
task runProguardTask(type: proguard.gradle.ProGuardTask) {
}
signingConfigs {
debug {
storeFile file("./keystore/keystore")
storePassword "******"
keyAlias "******"
keyPassword "*******"
}
release {
runProguard true
proguardFile 'proguard-android.txt'
storeFile file("./releasekey/keystore")
storePassword "******"
keyAlias "********"
keyPassword "*******"
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
И это вывод
$ ./gradlew build
FAILURE: Build failed with an exception.
* Where:
Build file '/home/username/Documents/eclipse/workspace/repo/ProjectName/build.gradle' line: 49
* What went wrong:
A problem occurred evaluating project ':ProjectName'.
> Could not find method runProguard() for arguments [true] on SigningConfigDsl_Decorated{name=release, storeFile=null, storePassword=null, keyAlias=null, keyPassword=null, storeType=null}.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 9.14 secs
Я также задаюсь вопросом, почему storeFile, storePassword, keyAlias и keyPassword являются нулевыми?
Ответы
Ответ 1
Ошибки, подобные этим, являются общими из-за неправильных имен свойств DSL. Убедитесь, что вы указали правильные значения: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Running-ProGuard на вашем build.gradle
:
android {
buildTypes {
release {
minifyEnabled true
proguardFile getDefaultProguardFile('proguard-android.txt')
}
}
}
Здесь вы можете найти javadoc со всеми свойствами (нажмите кнопку загрузки DSL-ссылки btn):
http://developer.android.com/tools/building/plugin-for-gradle.html
Обновление с 2014-11-24:
Несколько свойств были переименованы в плагин 0.14.0 gradle. runProguard -> minifyEnabled
проверьте ответ от Alécio и следуйте за последним списком изменений здесь: http://tools.android.com/tech-docs/new-build-system
Ответ 2
runProguard устарел (и скоро перестанет работать); измените на minifyEnabled "вместо
...
buildTypes {
release {
minifyEnabled true
....
Ответ 3
runProguard is deprecated after gradle build tools version 1.0.0-rc1
Running ProGuard
ProGuard is supported through the Gradle plugin for ProGuard version 4.10. The ProGuard plugin is applied automatically, and the tasks are created automatically if the Build Type is configured to run ProGuard through the minifyEnabled property.
android {
buildTypes {
release {
minifyEnabled true
proguardFile getDefaultProguardFile('proguard-android.txt')
}
}
productFlavors {
flavor1 {
}
flavor2 {
proguardFile 'some-other-rules.txt'
}
}
}