web-dev-qa-db-fra.com

échec de la compilation sur les services de jeu: 11.8.x avec erreur de l'analyseur Pro Guard

Il semble donc y avoir un bogue dans les derniers services de jeu à déployer. Est-ce que quelqu'un sait comment résoudre 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. semble que le problème est 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>;
}
46
Brill Pappin

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

buildTypes {
        release {
            debuggable false
            minifyEnabled true
            useProguard true
            ...
        }
        debug {
            debuggable true
            minifyEnabled true
            useProguard true
            ...
        }
    }
74
Brill Pappin

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 créer votre application sans modifier votre build.gradle. Le rétrécisseur par défaut n'a probablement changé que lors de la création d'Instant Run.

11
Carlo Conserva

Cette solution m'a aidé à:

Tout d'abord, dans app/build.gradle, utilisez useProguard en 'vrai'

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, minify serait un travail, mais le code ne dissimulerait pas.

2
Eduard Kornev

Je remarque que si vous désactivez Instant Run, la construction échoue toujours avec la même erreur (si vous avez activé minify mais Proguard est désactivé pour réduire votre code afin d’éviter la création de plusieurs dex dans la version de débogage). Si vous suivez Brill Pappin answer, vous devez activer Instant Run (et installer les bibliothèques à la demande) pour atteindre tous les points d'arrêt lors du débogage.
Il semble que l'activation du rétrécisseur, comme décrit dans le Google Docs , ne fonctionne maintenant que si vous utilisez Instant Run avec les services Google Play Play.

1
Will