在gae端点客户端库

时间:2015-09-13 23:58:00

标签: java proguard google-cloud-endpoints classnotfoundexception client-library

我在Eclipse Luna上用Java开发。包装过程由Proguard管理。

该应用程序在本地数据存储库和物理设备上运行良好。

但是,我将应用程序作为测试版推出到Google Play。该应用程序崩溃与ClassNotFoundException。例外是调用由GAE的端点客户端库进程生成的类。

这是我到目前为止所尝试过的,但没有运气......

  1. 重新排列构建路径以将所有客户端库放在列表顶部,取消选中依赖项并清理项目。

  2. 我还尝试在proguard-project.txt中使用-keepclass选项和完整的包和类名。

  3. 我在proguard-project.txt中添加了以下条目......仍然没有运气

    -keep public class *扩展com.google.api.client.json.GenericJson #Google-api-client需要保留泛型类型和通过反射访问的@Key注释** -keepclassmembers class * {   @ com.google.api.client.util.Key; } -keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault

  4. 任何人都知道我错过了什么?谢谢!

1 个答案:

答案 0 :(得分:0)

这是我最终添加到我的proguard-project.txt文件中的内容:

# Needed by google-api-client to keep generic types and @Key annotations accessed via reflection
-keep public final class * 
-keep public class *

-keepclassmembers class * {
  public <fields>;
  static <fields>;
  public <methods>;
  protected <methods>;
}

-keepclassmembers class * extends com.google.api.client.json.GenericJson{
  public <fields>;
  static <fields>;
  public <methods>;
}

-keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault