Android-приложение вылетает после обфускации proguard

Я запущен инструмент proguard в моем приложении, чтобы запутать. Я знаю, что при запутывании proguard сжимается и оптимизирует приложение по своему усмотрению. Поэтому после запутывания приложение открывается правильно, а затем, когда я пытаюсь войти в него, он падает. Лучшее, что я мог получить, это этот журнал, поскольку я подключил устройство.

10-03 11:12:47.384: E/AndroidRuntime(15058): FATAL EXCEPTION: AsyncTask #1 10-03 11:12:47.384: E/AndroidRuntime(15058): java.lang.RuntimeException: An error occured while executing doInBackground() 10-03 11:12:47.384: E/AndroidRuntime(15058): at android.os.AsyncTask$3.done(AsyncTask.java:299) 10-03 11:12:47.384: E/AndroidRuntime(15058): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) 10-03 11:12:47.384: E/AndroidRuntime(15058): at java.util.concurrent.FutureTask.setException(FutureTask.java:219) 10-03 11:12:47.384: E/AndroidRuntime(15058): at java.util.concurrent.FutureTask.run(FutureTask.java:239) 10-03 11:12:47.384: E/AndroidRuntime(15058): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 10-03 11:12:47.384: E/AndroidRuntime(15058): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 10-03 11:12:47.384: E/AndroidRuntime(15058): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 10-03 11:12:47.384: E/AndroidRuntime(15058): at java.lang.Thread.run(Thread.java:856) 10-03 11:12:47.384: E/AndroidRuntime(15058): Caused by: java.lang.ExceptionInInitializerError 10-03 11:12:47.384: E/AndroidRuntime(15058): at com.winwin.adcdoInBackground(Unknown Source) 10-03 11:12:47.384: E/AndroidRuntime(15058): at com.winwin.adcdoInBackground(Unknown Source) 10-03 11:12:47.384: E/AndroidRuntime(15058): at android.os.AsyncTask$2.call(AsyncTask.java:287) 10-03 11:12:47.384: E/AndroidRuntime(15058): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 10-03 11:12:47.384: E/AndroidRuntime(15058): ... 4 more 10-03 11:12:47.384: E/AndroidRuntime(15058): Caused by: java.lang.ExceptionInInitializerError 10-03 11:12:47.384: E/AndroidRuntime(15058): at com.winwin.acd<clinit>(Unknown Source) 10-03 11:12:47.384: E/AndroidRuntime(15058): ... 8 more 10-03 11:12:47.384: E/AndroidRuntime(15058): Caused by: java.lang.ExceptionInInitializerError 10-03 11:12:47.384: E/AndroidRuntime(15058): at com.bacad.<clinit>(Unknown Source) 10-03 11:12:47.384: E/AndroidRuntime(15058): ... 9 more 10-03 11:12:47.384: E/AndroidRuntime(15058): Caused by: java.lang.NoSuchFieldError: ANY 10-03 11:12:47.384: E/AndroidRuntime(15058): at java.lang.Class.getDeclaredAnnotation(Native Method) 10-03 11:12:47.384: E/AndroidRuntime(15058): at java.lang.Class.getAnnotation(Class.java:260) 10-03 11:12:47.384: E/AndroidRuntime(15058): at com.bacfag.<clinit>(Unknown Source) 

Я думал, что это будет потому, что прогард удалил некоторые классы или методы, которые он счел ненужными и, следовательно, вызвал сбой. То, что я сделал, я снова запустил proguard на этот раз, включая

 -dontobfuscate 

Поэтому я хотел, чтобы инструмент сжимался и оптимизировался, но не обфускации, поэтому я мог бы получить правильное представление о том, чего не хватает. Однако, когда я сгенерировал apk с помощью инструмента, на этот раз вокруг него работало отлично. Проблема в том, что он не был запутан.

Поэтому я не знаю, что делать сейчас.

У кого-нибудь есть идеи?

* EDIT *

Вот мой файл конфигурации

 To enable ProGuard in your project, edit project.properties to define the proguard.config property as described in that file. Add project specific ProGuard rules here. By default, the flags in this file are appended to flags specified in ${sdk.dir}/tools/proguard/proguard-android.txt You can edit the include path and order by changing the ProGuard include property in project.properties. For more details, see http://developer.android.com/guide/developing/tools/proguard.html Add any project specific keep options here: -libraryjars libs/crashlytics.jar -keep class com.facebook.** { *; } -keepattributes Signature -optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class com.android.vending.licensing.ILicensingService keep all classes that might be used in XML layouts -keep public class * extends android.view.View -keep public class * extends android.app.Fragment -keep public class * extends android.support.v4.Fragment -keepattributes *Annotation*, EnclosingMethod -keep class com.winwin.** { *; } -keepnames class org.codehaus.jackson.** { *; } -dontoptimize -dontshrink keep all public and protected methods that could be used by java reflection -keepclassmembernames class * { public protected <methods>; } -keepclasseswithmembernames class * { native <methods>; } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -dontwarn **CompatHoneycomb -dontwarn org.htmlcleaner.* -dontwarn com.fasterxml.jackson.databind.ext.** If your project uses WebView with JS, uncomment the following and specify the fully qualified class name to the JavaScript interface class: -keepclassmembers class fqcn.of.javascript.interface.for.webview { public *; } 

==========================

Вот моя панель проводника проекта


Android-support-v7-appcompat / ConverserSdk / facebook / google-play-services_lib / library / Main / MainWs / SlidingMenu


Поэтому моя основная часть зависит от каждого из других пакетов.

Solutions Collecting From Web of "Android-приложение вылетает после обфускации proguard"

Вам нужно сохранить некоторые классы от обфускации. Типичный файл конфигурации proguard для Android-проекта приведен ниже. Эта ссылка должна быть полезной: Proguard для Android

 -optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class com.android.vending.licensing.ILicensingService -keep public class * implements java.io.Serializable -keep public class * extends android.support.v4.app.Fragment -keep public class * extends android.support.v4.app.ListFragment -keep public class org.spongycastle.** { <fields>; <methods>; } -keep public class org.apache.** { <fields>; <methods>; } -ignorewarnings -keepclasseswithmembernames class * { native <methods>; } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } 

Быстрое рабочее решение

 -keep class com.fasterxml.jackson.annotation.** {*;} -keep class com.fasterxml.jackson.core.** {*;} -keep class com.fasterxml.jackson.databind.** {*;}