そのため、デプロイされる最新のplay-servicesにバグがあるようです。誰もこの問題を回避する方法を知っていますか?
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>'
さらなる情報。問題はコアモジュールにあるようです:
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>'
編集:そのエラーの原因となっているファイルの内容は次のとおりです。
# 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>;
}
デフォルトのシュリンクが変更されたようです。 ProGuardを有効にするための構成の追加は機能しているようです。
buildTypes {
release {
debuggable false
minifyEnabled true
useProguard true
...
}
debug {
debuggable true
minifyEnabled true
useProguard true
...
}
}
上記のソリューション(機能する)に加えて、問題はインスタントランにも関連しているようです。インスタントランを無効にすると、build.gradleを変更せずにアプリをビルドできます。おそらく、デフォルトのシュリンクは、インスタントラン用にビルドする場合にのみ変更されています。
このソリューションは私を助けました:
まず、app/build.gradleでuseProguardを「true」に変更します
次に、プロガードルールに「-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
したがって、minifyは機能しますが、コードは難読化されません。
インスタント実行を無効にしても、同じエラーでビルドが失敗することに気付きました(デバッグビルドでマルチデックスを回避するためにコードを縮小するために最小化を有効にし、Proguardを無効にした場合)。 Brill Pappin answerに従う場合、デバッグ中にブレークポイントをヒットするには、Instant Runを有効にし(プロンプトに従ってライブラリをインストールする必要があります)。
Google docs で説明されているように、シュリンクを有効にすると、Google Play Play ServicesでInstant Runを使用している場合にのみ機能するようになりました。