【问题标题】:Android apk not connecting to Azure server after using proguard使用 proguard 后,Android apk 未连接到 Azure 服务器
【发布时间】: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.** { *; }

我已经尝试了几个小时的许多修改,但没有成功。 我关注了thisthis 等等。

你能帮帮我吗? 谢谢

编辑:已解决。只需删除 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 之后的 .** 并修复即可。我不敢相信我花了这么多时间在这件事上......
  • 我建议将其添加为答案并接受它,以便下次有人遇到它时,您将为他们提供解决方案:)

标签: android azure proguard


【解决方案1】:

解决了。只需删除 proguard 文件中 User 之后的 .** 即可。就这样吧:

-keep public class com.company.app.User { *; }
-keepclassmembers public class com.company.app.User { *; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多