如何避免混淆 Firebase 模型字段?

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

我正在尝试混淆我的 Android 应用程序,但是当我生成 apk 作为版本并在设备上运行时,我的 firebase 字段名称会发生更改。而且有些字段数据没有上传到 firebase 实时数据库,例如 System.currentTimeMillisecond()、passwd。

我的应用程序运行良好,没有混淆,并正确插入所有数据。混淆后,它的行为不正确,并且无法将一些数据正确插入到 firebase 中。

预期节点:

-userid
 -name:"abc"
 -age:15
 -passwd:"pass@123"
 -timestamp:16003243241

混淆后:

-userid
 -a:"abc"
 -b:15

我的 UserModel 类

public class UserModel{
    
    public int age;
    public String name,passwd;
    public long timestamp;

    public UserModel(){}
    public UserModel(String name, String passwd, int age, long timestamp){
        this.name=name;
        this.passwd=passwd;
        this.age=age;
        this.timestamp=timestamp;
    }
}

我已申请到build.gradle:app

buildTypes {
        release {
            minifyEnabled true
            shrinkResources=true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

Proguard:

-keep class yourpackage.** { *; }
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose

我的最小 SDK 23 和目标 28。请帮助我正确混淆数据。

java android firebase firebase-realtime-database obfuscation
1个回答
0
投票

您发现问题混淆改变了您的模型,您可以忽略这些更改 看看这个解决方案,感谢 Mario Kutlev 和丹麦 Ansari https://stackoverflow.com/a/46156695/9077875

为了解决该问题,我将模型类移至模型包,并为包添加了新的 >ProGuard 规则。

-keep class com.company.myfeature.model.** { *; }

另一种解决方案是使用支持库中的@Keep注释来>禁用类的混淆:

@Keep
data class MyRequestBody(val value: String)

使用@Keep可能会导致问题,因为很容易忘记为新的>类添加它。

希望将来有一种方法可以使用一个 ProGuard 规则来禁用包中所有数据类的>混淆,而无需为模型类创建子>包。

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