2017-12-19 296 views
34

Wygląda więc na to, że w najnowszych usługach do grania jest błąd. Czy ktoś wie, jak obejść ten problem?Niepowodzenie budowania na play-services: 11.8.x z błędem parsera pro guarda

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':myappname:transformClassesWithAndroidGradleClassShrinkerForDevelopmentDebug'. 
> ProGuard configuration parser error: /Users/myusername/.gradle/caches/transforms-1/files-1.1/play-services-base-11.8.0.aar/d2ad9e16677fda9cf07a1280a66e91ca/proguard.txt line 3:88 no viable alternative at input '<fields>' 

Więcej informacji. Wydaje się, że problem jest w module rdzenia:

Error:Execution failed for task ':myappname:transformClassesWithAndroidGradleClassShrinkerForDevelopmentDebug'. 
> ProGuard configuration parser error: /Users/myusername/.gradle/caches/transforms-1/files-1.1/play-services-base-11.8.0.aar/d2ad9e16677fda9cf07a1280a66e91ca/proguard.txt line 3:88 no viable alternative at input '<fields>' 

EDIT: Zawartość pliku, który jest przyczyną tego błędu jest:

# b/35135904 Ensure that proguard will not strip the mResultGuardian. 
-keepclassmembers class com.google.android.gms.common.api.internal.BasePendingResult { 
    com.google.android.gms.common.api.internal.BasePendingResult.ReleasableResultGuardian <fields>; 
} 
+0

Mam zgłoszony problem do google przy użyciu https://issuetracker.google.com/issues/73439020 – Elye

Odpowiedz

51

Wydaje domyślny obkurczacz uległ zmianie. Dodanie konfiguracji, aby włączyć ProGuard wydawało się działać.

buildTypes { 
     release { 
      debuggable false 
      minifyEnabled true 
      useProguard true 
      ... 
     } 
     debug { 
      debuggable true 
      minifyEnabled true 
      useProguard true 
      ... 
     } 
    } 
+0

Nie zaznaczam tej odpowiedzi jako poprawnej odpowiedzi, dopóki nie otrzymam jakiejś weryfikacji. –

+0

To rozwiązanie działa dla mnie – bogdan

+0

To rozwiązanie działa również dla mnie. –

7

Oprócz powyższego rozwiązania (które działa): wydaje się, że problem związany jest z funkcją Instant Run. Jeśli wyłączysz Instant Run, możesz zbudować swoją aplikację bez zmiany swojego build.gradle. Prawdopodobnie domyślny shrinker zmienił się tylko podczas budowania dla Instant Run.

+0

Interesująca obserwacja. Nie mogłem znaleźć odniesienia do zmiany, ale to mogłoby wyjaśnić dlaczego. –

+0

działa poprzez wyłączenie natychmiastowego uruchomienia – Cheng

1

Zauważyłem, że jeśli wyłączysz Instant Run, kompilacja nadal kończy się niepowodzeniem z tym samym błędem (jeśli masz minify włączone, ale Proguard jest wyłączony, aby zmniejszyć swój kod, aby uniknąć wielokrotnego dekompresji w kompilacji debugowania). Jeśli podążasz za odpowiedzią Brill Pappin, musisz włączyć Instant Run (i zainstalować biblioteki zgodnie z monitem), aby uderzyć w punkty przerwania podczas debugowania.
Wydaje się, że włączenie funkcji zmniejszania zgodnie z opisem w artykule Google docs działa teraz tylko w przypadku korzystania z funkcji Natychmiastowe uruchamianie w Usługach Google Play.

1

To rozwiązanie pomogło mi:

Po pierwsze, w app/build.gradle zmian useProguard na 'true'

drugie, w PROGUARD zasady dodać linię '-dontobfuscate'

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

ProGuard -rules.pro

-dontobfuscate 

Tak więc minify będzie działaniem, ale kod nie będzie obfuscatować mi.