2015-03-31 13 views
7

Stworzyłem plik .aar (zawierający zasoby & kanału alfa) o projekcie biblioteki Android przy użyciukasował tych .aar plików

./gradlew assemble 

mam włączoną kasował przez ustawienie Minify == true

buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 

jednak kiedy uruchomić wspomniany polecenie Gradle z minify włączona = true, mam java.io.IOException: The output jar is empty. Did you specify the proper '-keep' options?

Co oznacza ten błąd wskazując na d jak mogę ukryć plik biblioteki .aar?

Pozdrawiam

+0

Czy działa bez proguard i minifyEnabled? – belurd

Odpowiedz

0

dwie sugestie:

  1. Proszę upewnić się ten plik istnieje w module Library: proguard-rules.pro.
  2. Proszę spróbować uruchomić "./gradlew: mylib: assembleRelease" z "mylib" należy zastąpić nazwą modułu bibliotecznego.
2

Proguard tnie nieużywane klasy. Biblioteki są samodzielnymi produktami i mają określone punkty wejścia, których nie należy obfalować. Musisz więc dodać reguły, aby zachować te punkty wejścia. Zasady lookes tak:

-keep class packagename {public *;} 
0
  1. skopiować pliku library.pro do projektu bibliotekę z tej lokalizacji:
    ...\android-sdk\tools\proguard\examples
  2. Komentarz te linie podczas budowania z Android Studio powinno być pewnie utrzymywane/aktualizowane po budynek z wiersza poleceń:
    -injars in.jar 
    -outjars out.jar 
    -libraryjars /lib/rt.jar
  3. zaktualizować swój projekt biblioteki build.gradle plik używać library.pro:

  4. Zsynchronizuj i zbuduj projekt, a teraz powinien wygenerować zniekształcony plik AAR.

Powiązane problemy