Gradle 和 Java 版本更新后,FirebaseUI 登录无法使用 Proguard

问题描述 投票:0回答:1

我在 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.** { *; }
android firebase proguard firebaseui
1个回答
0
投票

将以下行添加到我的 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

© www.soinside.com 2019 - 2024. All rights reserved.