Proguard Gradleマニュアル の提案に従ってbuild.gradleを構成しました
これはルート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がnullである理由も知りたいのですが。
このようなエラーは、DSLプロパティ名が間違っているためによく起こります。正しい値を指定してください: http://tools.Android.com/tech-docs/new-build-system/user-guide#TOC-Running-ProGuard at 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
runProguardは非推奨です(すぐに機能しなくなります);代わりに "minifyEnabled"に変更します
...
buildTypes {
release {
minifyEnabled true
....
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'
}
}
}