最近,忙完公司的一个版本。打包签名过后,发现App不能够正常运行使用,在网上查找了许多方法无果。

先贴上Log:

03-02 18:54:11.460: E/TestinAgent(3754): ****************************************03-02 18:54:12.285: E/AndroidRuntime(3754): FATAL EXCEPTION: main03-02 18:54:12.285: E/AndroidRuntime(3754): java.lang.NoSuchFieldError: PUBLIC_ONLY03-02 18:54:12.285: E/AndroidRuntime(3754): at java.lang.Class.getDeclaredAnnotation(Native Method)03-02 18:54:12.285: E/AndroidRuntime(3754): at java.lang.Class.getAnnotation(Class.java:243)03-02 18:54:12.285: E/AndroidRuntime(3754): at org.codehaus.jackson.map.introspect.VisibilityChecker$Std.(VisibilityChecker.java:178)03-02 18:54:12.285: E/AndroidRuntime(3754): at org.codehaus.jackson.map.ObjectMapper.(ObjectMapper.java:196)03-02 18:54:12.285: E/AndroidRuntime(3754): at com.app.util.JacksonParser.readValue(JacksonParser.java:22)03-02 18:54:12.285: E/AndroidRuntime(3754): at com.app.util.ArticleCollection.onResponse(ArticleCollection.java:60)03-02 18:54:12.285: E/AndroidRuntime(3754): at com.app.util.ArticleCollection.onResponse(ArticleCollection.java:1)03-02 18:54:12.285: E/AndroidRuntime(3754): at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:65)03-02 18:54:12.285: E/AndroidRuntime(3754): at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)03-02 18:54:12.285: E/AndroidRuntime(3754): at android.os.Handler.handleCallback(Handler.java:730)03-02 18:54:12.285: E/AndroidRuntime(3754): at android.os.Handler.dispatchMessage(Handler.java:92)03-02 18:54:12.285: E/AndroidRuntime(3754): at android.os.Looper.loop(Looper.java:137)03-02 18:54:12.285: E/AndroidRuntime(3754): at android.app.ActivityThread.main(ActivityThread.java:5493)03-02 18:54:12.285: E/AndroidRuntime(3754): at java.lang.reflect.Method.invokeNative(Native Method)03-02 18:54:12.285: E/AndroidRuntime(3754): at java.lang.reflect.Method.invoke(Method.java:525)03-02 18:54:12.285: E/AndroidRuntime(3754): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209)03-02 18:54:12.285: E/AndroidRuntime(3754): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)03-02 18:54:12.285: E/AndroidRuntime(3754): at dalvik.system.NativeStart.main(Native Method)
可以看到的是,出现了NoSuchFieldError错误。

百思不得其解,后来终于找到了一个靠谱的说法:

是因为我在代码中解析JSON数据的时候,使用Jackson将JSON数据变成了JavaBean对象,导致代码在打包签名、混淆代码后,找不到原来对象的属性了。

故报错。

解决方法:

在proguard-project.txt中,加入不需要混淆的JavaBean对象和对Jackson的不需要混淆代码的语句

-libraryjars libs/jackson-core-asl-1.9.7.jar
-libraryjars libs/jackson-mapper-asl-1.9.7.jar

-keep public class org.codehaus.**{*;}
-keepclassmembers public class org.codehaus.**{*;}
-dontwarn org.codehaus.jackson.**
-keep class org.codehaus.**
-keepnames class org.codehaus.jackson.** { *; }

重新打包签名,问题解决。

参考资料:http://stackoverflow.com/questions/25284562/proguard-aws-s3-issue

更多相关文章

  1. 关于android 数据库SQLite的使用日记
  2. Android(安卓)EditText默认不弹出软件键盘
  3. (Androidx)error: expected reference but got (raw string) @+and
  4. Android(安卓)studio for mac 的一些常用快捷键
  5. 项目打包后出现第三方JAR包找不到
  6. 利用androidannotations的@Backgroud及@UiThread注解替换原生Asy
  7. Android中Toolbar的使用 AppCompatActivity必备
  8. Android(安卓)Studio 奇技淫巧
  9. Android(安卓)Custom View --- Continuous Slider(连续滑动器)

随机推荐

  1. Android(安卓)P(api28) 不支持 http 协议
  2. Android(安卓)Contacts(一)—— 读取联系人
  3. android 安卓创建文件夹
  4. android(3)(android五大布局)
  5. android activity 单元测试总结
  6. Android常用代码
  7. Android(安卓)MediaPlayer 简单综合应用
  8. Android自动补全(二)
  9. Android中自定义Dialog样式
  10. android侧滑菜单实现