46 votes

échec de la construction sur play-services:11.8.x avec une erreur d'analyseur syntaxique pro guard

Il semble donc qu'il y ait un bug dans les derniers play-services à déployer. Quelqu'un sait-il comment contourner ce problème ?

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

Donc plus d'informations. Il semble que le problème se situe dans le module de base :

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 : Le contenu du fichier qui cause cette erreur est :

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

74voto

Brill Pappin Points 1662

Il semble que le rétrécisseur par défaut ait changé. L'ajout de la configuration pour activer ProGuard semble fonctionner.

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

11voto

Carlo Conserva Points 215

En plus de la solution ci-dessus (qui fonctionne) : le problème semble également lié à Instant Run. Si vous désactivez Instant Run, vous pouvez construire votre application sans modifier votre build.gradle. Il est probable que le rétrécisseur par défaut n'a changé que lors de la construction pour Instant Run.

2voto

Eduard Kornev Points 228

Cette solution m'a aidé :

D'abord, dans app/build.gradle, changez useProguard en 'true'.

Deuxièmement, dans les règles de proguard, ajoutez la ligne '-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

Donc, minifier serait un travail, mais le code ne serait pas obscurci.

1voto

Will Points 76

J'ai remarqué que si vous désactivez l'exécution instantanée, la compilation échoue toujours avec la même erreur (si vous avez activé le minify mais désactivé Proguard pour réduire votre code et éviter le multi-dex dans la compilation de débogage). Si vous suivez Brill Pappin vous devez activer l'exécution instantanée (et installer les bibliothèques comme demandé) pour atteindre les points d'arrêt pendant le débogage.
Il semble que permettre le rétrécissement tel que décrit dans la Google docs ne fonctionne désormais que si vous utilisez Instant Run avec les services Google Play.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X