2013-11-22 10 views
5

Stworzyłem nowy projekt w Android Studio i używam Gradle do jego zbudowania.Notatka o programie dla nieznanej klasy "Obiekt" z Androidem Studio i Gradle

Dodałem moja integracja Proguard dopuszczenia buduje, i widzę tę notatkę za każdym razem uruchomić mój assembleRelease kroku:

Note: the configuration refers to the unknown class 'Object' 
     Maybe you meant the fully qualified name 'java.lang.Object'? 

Żaden z moich plikach konfiguracyjnych Proguard, lub te, które w Android SDK folder zawiera niekwalifikowaną nazwę Object.

My build.gradle obejmuje:

buildTypes { 
    release { 
     runProguard true 
     proguardFile 'proguard-project.txt' 
     proguardFile getDefaultProguardFile('proguard-android-optimize.txt') 

     signingConfig signingConfigs.release 
    } 
} 

I nawet zobaczyć tę samą nutę Kiedy usunąć zarówno proguardFile linie powyżej, a także, jeśli usunę swoje własne zasady PROGUARD (za każdym razem robi czyste przed przebudową).

Zgaduję, że jest to łagodny problem z wtyczką Proguard dla Gradle?

Odpowiedz

11

Dzięki za sugestię Eric Lafortune! Dodanie -printconfiguration do mojego proguard.txt ujawniło, że problem był w google-play-services_lib (r13).

Winny reguła Proguard jest (powinien być java.lang.Object[][]):

-keep class * extends java.util.ListResourceBundle { 
    protected Object[][] getContents(); 
} 

Można to zobaczyć na komputerze Mac, klikając prawym przyciskiem myszy na Android Studio wykonaj Show Package Contents, następnie przejdź do sdk/extras/google/google_play_services/libproject/google-play-services_lib/proguard.txt.

Najszybszym rozwiązaniem jest dodanie prawidłowej reguły Proguard do własnej konfiguracji Proguard i po prostu zignorowanie Notatki Proguarda.

-keep class * extends java.util.ListResourceBundle { 
    protected java.lang.Object[][] getContents(); 
} 

podniosłem ten błąd z Google jako Android Issue #63095.

+1

Dodałem regułę, ale wciąż narzeka. Domyślam się, że tak się dzieje, ponieważ stara zasada wciąż jest zawieszona w pliku konfiguracyjnym po mojej własnej regule. Czy istnieje sposób obejścia tego? – sttaq

5

Nie znam żadnych niewykwalifikowanych odwołań do Object w pakiecie Android SDK, ale można podać opcję -printconfiguration config.txt, aby napisać pełną konfigurację i wyszukać odniesienie. Może to być argument metody lub wartość zwracana, którą łatwo przeoczyć.

+0

Gdzie/jak określamy tę opcję? W ramach jakiego polecenia? I przeciwko czemu plik txt ??? –

+0

Próbowałem dodać '-printconfiguration config.txt' do jednego z plików reguł proguard w moim projekcie, ale podczas budowania mojej aplikacji pojawia się ten komunikat o błędzie:' Flag -printconfiguration config.txt nie jest obsługiwany przez wbudowany shrinker. " –

Powiązane problemy