使用proguard后Android apk未连接到Azure服务器
我一直在寻找这个问题的解决方案,我尝试了许多proguard配置,但都没有成功。 在我使用proguard制作发布版本之前,该应用程序一直运行良好。 我得到一个错误: “java.lang.IllegalArgumentException:表示mobile serviceTable的类在分配类时必须定义一个id属性” 我相信这是由我试图访问的表的类引起的,它的变量“id”名称发生了更改 我的意见如下:使用proguard后Android apk未连接到Azure服务器,android,azure,proguard,Android,Azure,Proguard,我一直在寻找这个问题的解决方案,我尝试了许多proguard配置,但都没有成功。 在我使用proguard制作发布版本之前,该应用程序一直运行良好。 我得到一个错误: “java.lang.IllegalArgumentException:表示mobile serviceTable的类在分配类时必须定义一个id属性” 我相信这是由我试图访问的表的类引起的,它的变量“id”名称发生了更改 我的意见如下: public class User { public String id; pub
public class User {
public String id;
public String nickname;
public String phone;
}
连接方式为:
mClient.getTable(User.class).where().field("nickname")
.eq(nick).execute(new TableQueryCallback<User>() {....
我尝试了许多修改,但都没有成功。
我跟在后面,还有许多其他人
你能帮帮我吗?
谢谢
编辑:已解决。只需在proguard文件中删除用户之后的。**。就这样吧:
-keep public class com.company.app.User { *; }
-keepclassmembers public class com.company.app.User { *; }
-keep public class com.company.app.User { *; }
-keepclassmembers public class com.company.app.User { *; }
解决了。只需在proguard文件中删除用户之后的。**。就这样吧:
-keep public class com.company.app.User { *; }
-keepclassmembers public class com.company.app.User { *; }
-keep public class com.company.app.User { *; }
-keepclassmembers public class com.company.app.User { *; }
您是否已尝试将附加的SerializedName行添加到您的proguard配置中,如其中一篇链接帖子注释中所述-keep@interface com.google.gson.annotations.SerializedName您的意思是将类成员@com.google.gson.annotations.SerializedName(“id”)放入,然后添加-keepattributes Annotation-keep@interface com.google.gson.annotations.SerializedName吗?对我已经试过了,我正在检查proguard文件,在mapping.txt中我可以看到com.company.app.User->com.company.app.User:java.lang.String昵称->java.lang.String手机->b,所以这些都被混淆了,在usage.txt:public java.lang.String id中没有保留id…我想这是我解决的问题问题只需在proguard文件中删除用户之后的.*,即可修复。我真不敢相信我花了那么多时间在这件事上……我建议添加这一点作为答案,并接受它,以便下次有人遇到它时,你将为他们提供解决方案:)