使用 proguard 后,Android apk 未连接到 Azure 服务器
Posted
技术标签:
【中文标题】使用 proguard 后,Android apk 未连接到 Azure 服务器【英文标题】:Android apk not connecting to Azure server after using proguard 【发布时间】:2015-04-10 14:43:48 【问题描述】:我一直在寻找解决这个问题的方法,我尝试了许多 proguard 配置但没有成功。 该应用程序运行完美,直到我使用 proguard 制作发布版本。 我收到错误消息: “java.lang.IllegalArgumentException: 表示移动服务表的类必须定义一个 id 属性”在分配类时
我相信这是由我试图访问的表的类引起的,它的变量“id”名称已更改。
我有以下几点:
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 class com.microsoft.azure.storage.table.** *;
-dontwarn com.fasterxml.jackson.core**
-keep class com.microsoft.windowsazure.mobileservices.** *;
-dontwarn android.os.**
-dontwarn com.microsoft.windowsazure.mobileservices.RequestAsyncTask
##---------------from here is the part that i have modified a lot of times -
-keepattributes Signature
-keepattributes *Annotation*
-keep public class com.company.app.User.** *;
-keepclassmembers public class com.company.app.User.** *;
我已经尝试了几个小时的许多修改,但没有成功。 我关注了this 和this 等等。
你能帮帮我吗? 谢谢
编辑:已解决。只需删除 proguard 文件中 User 之后的 .** 即可。就这样吧:
-keep public class com.company.app.User *;
-keepclassmembers public class com.company.app.User *;
【问题讨论】:
您是否尝试过将附加的 SerializedName 行添加到您的 proguard 配置中,如链接帖子 cmets 中所述? -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 phone -> b 所以那些被混淆并且在usage.txt中:public java.lang.String id 所以id没有保留......我猜是有问题 我解决了这个问题。只需在 proguard 文件中删除 User 之后的 .** 并修复即可。我不敢相信我花了这么多时间在这件事上...... 我建议将其添加为答案并接受它,以便下次有人遇到它时,您将为他们提供解决方案:) 【参考方案1】:解决了。只需删除 proguard 文件中 User 之后的 .** 即可。就这样吧:
-keep public class com.company.app.User *;
-keepclassmembers public class com.company.app.User *;
【讨论】:
以上是关于使用 proguard 后,Android apk 未连接到 Azure 服务器的主要内容,如果未能解决你的问题,请参考以下文章
使用 Android Studio 签署 APK 时出现 Proguard 错误
如何使用 Eclipse + Proguard“运行”导出的 Android 应用程序?