【发布时间】:2019-10-17 20:55:59
【问题描述】:
play-services-base-16.0.1.aar (mvnrepository) 有proguard.txt,内容如下:
# 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 mResultGuardian;
}
但是您可以在classes.jar 中看到mResultGuardian 的类型已经被混淆为BasePendingResult.zaa。我想这就是我得到的原因
Note: the configuration refers to the unknown class 'com.google.android.gms.common.api.internal.BasePendingResult$ReleasableResultGuardian'
这应该如何工作?我是 Proguard 的新手,对正在发生的事情只有非常基本的了解,所以请让你的答案简单:)
项目详情:
gradlew version: 5.4
build plugin: com.android.tools.build:gradle:3.2.0
很遗憾,我现在无法将 gradle build 插件更新为 3.3.* 或 3.4.*,因为某些脚本不兼容,需要进行大量重构。
app/proguard.txt(来自我看到的建议):
-keep class com.google.android.gms.analytics.** { *; }
-keep class com.google.android.gms.gcm.** { *; }
-dontwarn com.google.android.gms.**
但这无济于事。
UPD
我最终升级到 com.android.tools.build:gradle:3.4.1(必须调整一些 api 更改)这解决了问题,但我仍然不明白应该如何使用这样的规则。
【问题讨论】:
标签: android google-play-services proguard