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

e37o9pze  于 5个月前  发布在  Android
关注(0)|答案(1)|浏览(77)

我试图混淆我的android应用程序,但当我生成apk作为一个版本,并在设备上运行,然后我的firebase字段名称被更改。而且有些字段数据没有上传到firebase真实的时间数据库,例如System.currentTimeMillisecond(),passwd.
我的应用程序在没有混淆的情况下工作正常,并正确插入所有数据。混淆后,它的行为不正确,并没有正确插入一些数据到firebase。

预期节点:

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

字符串

obfuscate后:

-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.请帮助我混淆数据正确.

utugiqy6

utugiqy61#

你发现了问题混淆改变了你的模型你可以忽略这些改变看看这个解决方案感谢Mario Kutlev和Danish Ansari https://stackoverflow.com/a/46156695/9077875
为了解决这个问题,我将模型类移到了模型包中,并为包添加了新的>ProGuard规则。
第一个月
另一种解决方案是使用支持库中的@Keep注解来>禁用类的混淆:
@Keepdata class MyRequestBody(val value: String)
使用@Keep可能会导致问题,因为很容易忘记为新>类添加它。
希望在未来,有一种方法可以通过一个ProGuard规则来禁用包中所有Data类的>混淆,而不需要为模型类提供一个子>包。

相关问题