在我们的项目中,我们一直在成功使用:
一切正常,直到上周我们升级到gradle plugin 3.2.0
。
在此版本中,如果我们具有以下proguard配置以删除对Log的调用:
-assumenosideeffects class android.util.Log { *; }
运行该应用程序时,我们得到:
java.lang.VerifyError:验证者拒绝了com.google.firebase.FirebaseApp类:void com.google.firebase.FirebaseApp。()无法验证:void com.google.firebase.FirebaseApp。():[0x37]寄存器v0的类型为未初始化参考:java.lang.Object分配PC:53,但预期参考:java.lang.Object void com.google.firebase.FirebaseApp。(android.content.Context,java.lang.String,com.google.firebase.b)无法验证:void com.google.firebase.FirebaseApp。(android.content.Context, java.lang.String,com.google.firebase.b):[0x3C]寄存器v8的类型为未初始化参考:com.google.firebase.internal.a分配PC:58,但预期参考:com.google.firebase.FirebaseApp $一种 com.google.firebase.FirebaseApp com.google.firebase.FirebaseApp.a(android.content.Context,com.google.firebase.b,java.lang.String)无法验证:com.google.firebase.FirebaseApp com。 google.firebase.FirebaseApp.a(android.content.Context,com.google.firebase.b,java.lang.String):[0x17]寄存器v1具有未初始化的类型参考:com.google.firebase.FirebaseApp $ 1分配PC: 21,但预期参考:com.google.android.gms.common.api.internal.a $ a(“ com.google.firebase.FirebaseApp”的声明出现在/data/app/com.example.app-2/base .apk)`
如果我们删除该配置以剥离对 Log
的调用,那么一切都很好,就像在gradle插件的早期版本(3.1.4)中一样。
有人知道可能是什么原因吗?
答案 0 :(得分:5)
proguard -assumenosideeffects
和Log
好像有问题。
仅在您使用的方法上以及依赖于这些-assumenosideffects
方法的方法上尝试使用Log
。
类似的东西:
-assumenosideeffects class android.util.Log {
public static *** v(...);
public static *** d(...);
public static *** i(...);
public static *** w(...);
public static *** e(...);
}
代替通常的
-assumenosideeffects class android.util.Log {*;}
希望这会有所帮助。