热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用AndroidStudio的GoogleCloudEndpoints模板时的Proguard配置

如何解决《使用AndroidStudio的GoogleCloudEndpoints模板时的Proguard配置》经验,为你挑选了1个好方法。

我们需要存储和检索用户在线使用我们的应用生成的内容.为此,我们决定使用Android Studio的集成Google Cloud Endpoints模板快速创建API(此处为官方用法示例).

它在调试中工作正常,但在发布模式下,启用Proguard后,它会失败.更糟糕的是,我没有找到任何关于在Android Studio的Endpoints模板中使用Proguard的文档或示例.

经过一个小时左右的探索并尝试使其工作,proguard-rules.pro现在看起来像这样:

-keep class com.google.api.** { public *; }
-dontwarn com.google.api.**
-keep class com.google.common.** { public *; }
-dontwarn com.google.common.**

# Not allowed to post company and app names, but this line is correct in the real file
-keep class com.companyname.appname.application.backend.** { *; }

使用此配置,我在我的类中获得了一个类强制转换异常ArrayAdapter:

java.lang.ClassCastException: com.google.api.client.util.ArrayMap cannot be cast to com.companyname.appname.application.backend.messageApi.model.Message

这似乎不是什么地方执行返回的数据转换和,而不是一个ListMessage对象,我得到Listcom.google.api.client.util.ArrayMap对象(它们确实包含有效数据,顺便说一句).

我可以检查应用程序是否在发布模式下运行并手动进行转换,但是,这是一种hacky方式,我宁愿正确地执行此操作.那么,有人可以告诉我Proguard配置文件中缺少什么吗?



1> myanimal..:

我在其中一个应用程序中使用端点执行类似的操作.我也有一些Proguard的问题(不记得究竟是什么).

我的Proguard规则的这一部分似乎适用:

# Needed by google-api-client to keep generic types and @Key annotations accessed via reflection
-keepclassmembers class * {
  @com.google.api.client.util.Key ;
}
-keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault

我不知道是否有必要,但我也有这个部分:

# Play Services
-dontwarn com.google.android.gms.**
-dontwarn com.google.common.cache.**
-dontwarn com.google.common.primitives.**
-keep class * extends java.util.ListResourceBundle {
    protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
    public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
    @com.google.android.gms.common.annotation.KeepName *;
}

希望能帮助到你.


您发布的第一部分确实是正确的解决方案.
很好,感谢您的反馈.
推荐阅读
author-avatar
小小一株含羞草2010
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有