【问题标题】:Using Proguard on App Engine Connected Android Client在 App Engine 连接的 Android 客户端上使用 Proguard
【发布时间】:2014-12-08 15:41:05
【问题描述】:

我即将在 Google Play 商店上架我的应用程序,我正在尝试使用 Proguard 进行混淆。它使用 GAE 和 RequestFactory,我得到“RequestFactory Validation Tool must be run for ...”异常。看过一些关于此的帖子,以及一些答案,但没有确定的答案,也没有对我有用的东西。我了解反射/符号问题,并已将 RequestFactory 接口排除在混淆之外,但无济于事。有人可以提供一个简化的工作示例,说明应该进入 proguard 配置文件以成功完成此操作。

谢谢

【问题讨论】:

    标签: android google-app-engine proguard requestfactory


    【解决方案1】:

    一年后可能会迟到。 这对使用 proguard for app engine 的人会有所帮助, 将此添加到您的 proguard.cfg 文件中

    # Needed to keep generic types and @Key annotations accessed via reflection
    
    -keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault
    
    -keepclassmembers class * {
      @com.google.api.client.util.Key <fields>;
    }
    
    # Needed by google-http-client-android when linking against an older platform version
    
    -dontwarn com.google.api.client.extensions.android.**
    
    # Needed by google-api-client-android when linking against an older platform version
    
    -dontwarn com.google.api.client.googleapis.extensions.android.**
    

    【讨论】:

      【解决方案2】:

      我找不到 RequestFactory Validation Tool 内部功能的描述,但很可能它添加了注释。 ProGuard 的混淆步骤默认会删除这些,但您可以保留它们:

      -keepattributes *Annotation*
      

      【讨论】:

      • 我已经有了 -keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault 这条线,这是我从另一篇文章中获取的。我也添加了您的建议,但无济于事。这是引发 java.lang.RuntimeException 的异常:必须为 com.client.MyRequestFactory RequestFactory 类型运行 RequestFactory ValidationTool
      • 我终于让它工作了MyRequestFactory 是 com.myapp.client 包中唯一的东西。它仍然崩溃了。然后我回去阅读有关验证工具的内容。它生成一个 MyRequestFactoryDe​​obfuscatorBuilder 类。添加了以下 -keep class com.myapp.client.* { *;它开始工作了。不过庆祝还为时过早 - 我的应用程序的其他地方有一些意外的异常......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-05
      • 1970-01-01
      • 2013-10-21
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      • 2014-08-07
      相关资源
      最近更新 更多