2013-11-21 19 views
16

mam skonfigurowane build.gradle jak sugeruje Proguard Gradle manualGradle i PROGUARD: nie można znaleźć metody runProguard() dla argumentów [true]

To jest korzeń 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' 
    } 
} 

Teraz jest build.gradle dla mojego projektu

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 
     } 
    } 
} 

I to jest wyjście

$ ./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 

Zastanawiam się również, dlaczego pliki storeFile, storePassword, keyAlias ​​i keyPassword są puste?

Odpowiedz

13

Błędy takie jak te są częste z powodu nieprawidłowych nazw właściwości DSL. Upewnij się, że określenie prawidłowych wartości: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Running-ProGuard w swojej build.gradle:

android { 
    buildTypes { 
     release { 
      minifyEnabled true 
      proguardFile getDefaultProguardFile('proguard-android.txt') 
     } 
    } 
} 

można znaleźć javadoc ze wszystkimi właściwościami tutaj (kliknij Pobierz odniesienia DSL BTN): http://developer.android.com/tools/building/plugin-for-gradle.html


Aktualizacja od 2014-11- 24:

Kilka właściwości zostało zmienionych na 0.14.0 gradle plugin. runProguard -> minifyEnabled sprawdzić odpowiedź od Alécio i śledzić listę najnowszych zmian tutaj: http://tools.android.com/tech-docs/new-build-system

+0

dzięki! Zadziałało. –

+4

runProguard został przestarzały. Sprawdź poniżej poprawną odpowiedź, musisz zmienić na minifyEnabled. –

57

runProguard jest przestarzałe (a wkrótce przestać działać); zmieni się na "minifyEnabled" zamiast

... 

buildTypes { 
    release { 
     minifyEnabled true 
     .... 
+4

Dzięki za naprawienie błędu gradle w Androidzie 1.0 RC 1 – Lemberg

+1

Thanx man! To świetna poprawka! – Armin

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' 
     } 
    } 
} 
+0

powyższa część naprawdę zabezpiecza twój kod Androida? –

Powiązane problemy