我试图混淆我的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.请帮助我混淆数据正确.
1条答案
按热度按时间utugiqy61#
你发现了问题混淆改变了你的模型你可以忽略这些改变看看这个解决方案感谢Mario Kutlev和Danish Ansari https://stackoverflow.com/a/46156695/9077875
为了解决这个问题,我将模型类移到了模型包中,并为包添加了新的>ProGuard规则。
第一个月
另一种解决方案是使用支持库中的@Keep注解来>禁用类的混淆:
@Keep
data class MyRequestBody(val value: String)
使用@Keep可能会导致问题,因为很容易忘记为新>类添加它。
希望在未来,有一种方法可以通过一个ProGuard规则来禁用包中所有Data类的>混淆,而不需要为模型类提供一个子>包。