将 minifyEnabled 设置为 true 后,我收到以下错误 [重复]

Posted

技术标签:

【中文标题】将 minifyEnabled 设置为 true 后,我收到以下错误 [重复]【英文标题】:After setting the minifyEnabled as true I'm getting the following error [duplicate] 【发布时间】:2016-12-30 03:22:05 【问题描述】:
E/androidRuntime: FATAL EXCEPTION: main
    Process: in.pharmaz.partner, PID: 26775
    java.lang.RuntimeException: Unable to start activity ComponentInfoin.pharmaz.partner/in.pharmaz.partner.SplashScreenActivity: java.lang.ClassCastException: com.google.android.gms.internal.zzald cannot be cast to com.google.firebase.auth.UserInfo
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
        at android.app.ActivityThread.-wrap11(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    Caused by: java.lang.ClassCastException: com.google.android.gms.internal.zzald cannot be cast to com.google.firebase.auth.UserInfo
        at com.google.android.gms.internal.zzadh.zzN(Unknown Source)
        at com.google.firebase.auth.FirebaseAuth.zza(Unknown Source)
        at com.google.firebase.auth.FirebaseAuth.zzOj(Unknown Source)
        at com.google.firebase.auth.FirebaseAuth.<init>(Unknown Source)
        at com.google.firebase.auth.FirebaseAuth.<init>(Unknown Source)
        at com.google.android.gms.internal.zzadg.<init>(Unknown Source)
        at com.google.firebase.auth.FirebaseAuth.zzc(Unknown Source)
        at com.google.firebase.auth.FirebaseAuth.zzb(Unknown Source)
        at com.google.firebase.auth.FirebaseAuth.getInstance(Unknown Source)
        at in.pharmaz.partner.SplashScreenActivity.onCreate(SplashScreenActivity.java:38)
        at android.app.Activity.performCreate(Activity.java:6251)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
        at android.app.ActivityThread.-wrap11(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5417) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

SplashScreenActivity 第 38 行是:

firebaseAuth = FirebaseAuth.getInstance();

我的 ProGuard 规则包含:

-keep class com.google.** *;

我到处找,一无所获。

我的build.gradle

 buildTypes 
    release 
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.config
        proguardFile 'C:/Users/vikas/Desktop/phzVendor/phzandvendor/app/proguard-rules.pro'
    
    debug 
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        debuggable true
        signingConfig signingConfigs.config
        proguardFile 'C:/Users/vikas/Desktop/phzVendor/phzandvendor/app/proguard-rules.pro'
    

【问题讨论】:

主要异常是 - java.lang.ClassCastException: com.google.android.gms.internal.zzald 无法转换为 com.google.firebase.auth.UserInfo 请发布您的 build.gradle 文件 我知道,但是当 minifyEnabled 为 false 时,它​​会起作用。我认为 proguard 正在混淆某些东西,这导致了这个错误。我不知道我必须写什么规则来避免这种情况。 是的,见此处相同***.com/questions/38883160/… 谢谢!有效。我在 proguard 规则文件中添加了 -keepattributes 签名。 【参考方案1】:

当您将minifyEnabled 设置为true 时,这意味着proguard 启动工作。 您需要为每个库和应用程序提供适当的 proguard 配置。

对于 firebase,您可以在 here 或 official docs 中找到配置

还有here is 一个项目,它收集了许多有用的sn-ps 用于proguard 配置。

【讨论】:

以上是关于将 minifyEnabled 设置为 true 后,我收到以下错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

设置 minifyEnabled 为 true 时无法使用 GSON 解析 json 对象

生成带有 minifyEnabled 设置为 true 的签名 APK 后,firebase UI 输出空白

当我设置 minifyEnabled = true 时,应用程序无法使用 API

NotSerializableException: kotlin.UNINITIALIZED_VALUE 设置 minifyEnabled 后为 true

Android 9 崩溃 minifyEnabled 和 multiDexEnabled

是否添加“ minifyEnabled true”和“ proguard-android-optimize.txt”混淆了sqlite数据库并使其与以前的版本不兼容?