我在 Android 应用程序中使用 FirebaseUI 的登录功能时遇到问题。最初,在启用 Proguard 的情况下它可以正常工作。然而,在我的代码中进行一些版本更改后,当启用 Proguard 时,它已停止工作。具体来说,我在登录流程期间没有在 onSignInResult 回调中收到任何结果。奇怪的是,当我禁用 Proguard 时,登录过程按预期工作。在这些更改之前,它在启用和禁用 proguard 的情况下都可以正常工作,但在这些更改之后,它只能在禁用 proguard 的情况下正常工作。
改变了
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
到
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip
改变了
gradle version "7.2.0"
到
gradle version "8.0.2"
改变了
apply plugin: 'kotlin-android-extensions'
到
apply plugin: 'kotlin-parcelize'
已添加
namespace Application.id
build.gradle 的 android 块内部
改变了
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
}
到
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
重要的是,我没有对我的 Proguard 文件进行任何更改,我在下面分享了该文件:
-keep class com.xyz.business.domain.model.* { *;}
-keep class com.xyz.framework.dataSource.cache.database.* { *;}
-keep class com.xyz.framework.dataSource.cache.model.* { *;}
-keep class com.xyz.framework.dataSource.network.model.* { *;}
-keepattributes SourceFile,LineNumberTable # Keep file names and line numbers.
-keep public class * extends java.lang.Exception # Optional: Keep custom exceptions.
我尝试通过将以下行添加到我的 Proguard 文件中来解决该问题,但他们尚未解决问题:
-keepattributes Signature
-keepattributes *Annotation*
# Firebase UI Auth
-keep class com.firebase.** { *; }
-dontwarn com.firebase.**
-keep class org.apache.** { *; }
-keepnames class com.fasterxml.jackson.** { *; }
-keepnames class javax.servlet.** { *; }
-keepnames class org.ietf.jgss.** { *; }
-dontwarn org.w3c.dom.**
-dontwarn org.joda.time.**
-dontwarn org.shaded.apache.**
-dontwarn org.ietf.jgss.**
# Only necessary if you downloaded the SDK jar directly instead of from maven.
-keep class com.shaded.fasterxml.jackson.** { *; }
将以下行添加到我的 proguard 文件中可以修复此问题:
-keep public class com.google.firebase.** {*;}
-keep class com.google.android.gms.internal.** {*;}
-keepclasseswithmembers class com.google.firebase.FirebaseException
参考:https://github.com/firebase/firebase-android-sdk/issues/2124#issuecomment-920922929