我的firestore变量在cloud firestore里面用别的名字保存了,我想这和proguard有关,但是我没有得到。
以下是我的用户名。
public String id;
public String name;
public String number;
public String profilePic;
public String shopPic;
下面是屏幕截图,显示了保存在firestore.
上的内容
下面是一些相关的代码,非常简单
FirestoreUrls.get().getAccountsCollection()
.document().set(binding.getUser()).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
hideProgressBar();
handleFirebaseException(getClass(), task, true);
}
});
3条答案
按热度按时间fumotvh31#
您遇到此问题是因为您使用的是出于安全考虑的Profuard,它会打乱代码,以便其他人无法在您创建应用的APK后立即看到它。这在Firebase的情况下也可用。要解决此问题,请在
build.gradle
文件中添加以下代码行:然后在项目的Proguard文件中添加以下规则,通过将包名替换为您自己的包名来防止该行为:
请查看文档以了解更多信息:
rta7y2nd2#
proguard
将字段和类名重命名为较短的名称。要防止出现这种情况,可以使用proguard-android.txt
文件中的"-keep class com.package.MyClass"
行将此类从proguard优化中排除。但是恕我直言,你应该在代码的某个地方把你的变量Map到合适的字符串,然后把字符串发送到云firestore,因为现在你类中的任何重构(比如重命名字段)都可能破坏你的firestore名称匹配。
看起来你可以用这种方法将对象字段Map到合适的字符串:
lsmepo6l3#
溶液:
<Your class package here>
可以在类文件中找到:com.elliottsoftware.calftracker.domain.models.fireBase
,这就是您要替换为<Your class package here>
的内容