2013-09-30 17 views
6

Chciałbym uruchomić ProGuard na uwalnianiu kompilacji mojego Android biblioteki. Poniżej znajduje się mój plik build.gradle, który znajduje się w moim projekcie.Jak uruchomić program runProguard dla wtyczki Gradle biblioteki Android?

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

Running gradlew clean lub gradlew build powraca następujący błąd:

> Could not find method buildTypes() for arguments [[email protected]d] on project

Wydaje się, że wtyczki android-library brakuje metody buildTypes. Jeśli pomyślnie zmienić apply plugin do android, gradlew przebiegów. Jest to jednak projekt biblioteki i chciałbym go zachować. Inne części moje gradle.build (nie wymienione tutaj) polegają na projekcie będącym biblioteką.

Czy jest jakiś sposób, aby android-library wtyczki run ProGuard na budowie?

+0

Myślę, że pomysł polega na uruchomieniu ProGuarda raz dla całego kodu zawierającego końcową aplikację, a nie dla każdej biblioteki osobno. –

+0

Tworzę słoik SDK do dystrybucji. Chciałbym, żeby funkcje publiczne były widoczne, ale prywatne zmienne i funkcje nie byłyby widoczne. – BVB

Odpowiedz

2

rozwiązać mój problem, biorąc release z buildTypes tak:

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

Należy również pamiętać, że dodałem kolejną proguardFile pod release. Naprawiono inny problem, który miałem po rozwiązaniu początkowego problemu buildTypes.

+0

Czy można być bardziej szczegółowe na temat gdzie dodano drugą proguardFile i dlatego trzeba było zrobić? – davidgyoung

+0

dodałem go prosto do głównego katalogu projektu (gdzie 'file build.gradle' jest. Plik może być używany do konfigurowania różnych opcji (na przykład, jakie funkcje/klas/zmienne nie powinno być„strzeżonego”). Podręcznik jest dostępny tutaj: http://proguard.sourceforge.net/index.html – BVB

+0

Ah, rozumiem, że brakowało mi tego, że * przesunąłeś * blok wydania, więc jest on na tym samym poziomie, na którym użył releaseTypes być w build.gradle – davidgyoung

Powiązane problemy