Android-App stürzt nach dem proguard Verschleierung

Habe ich proguard tool auf meiner app zu verschleiern. Ich weiß, dass, wenn der Verschleierung Auftritt, proguard schrumpft und optimiert die app, wie er es für richtig hält. So nach Verschleierung öffnet die app richtig und dann wenn ich mich einloggen will stürzt es ab. Das beste was ich bekommen konnte, war dieses Protokoll, da hatte ich das Gerät angeschlossen ist.

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.a.d.c.doInBackground(Unknown Source)
10-03 11:12:47.384: E/AndroidRuntime(15058):    at com.winwin.a.d.c.doInBackground(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.a.c.d.<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.b.a.c.ad.<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.b.a.c.f.ag.<clinit>(Unknown Source)

Hatte ich gedacht, dies wäre weil proguard entfernt hatte einige Klassen oder Methoden, die Sie als unnötig und daher den Absturz verursachen. Was ich Tat, war, ich lief proguard auch dieses mal wieder inklusive

-dontobfuscate

so, ich wollte das tool zu verkleinern und zu optimieren, aber nicht zu verschleiern, so konnte ich dann einen richtigen Lesen, was fehlte. Wenn ich allerdings erzeugt das apk mit dem tool dieses mal lief es perfekt. Problem ist, es war nicht verschleiert.

So, ich weiß nicht, was jetzt zu tun sei.

Hat jemand irgendwelche Ideen?

*BEARBEITEN*

Hier ist meine config Datei

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 *;
}

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

Hier ist mein Projekt-explorer Bereich mit der


android-support-v7-appcompat /
ConverserSdk /
facebook /
google-play-services_lib /
Bibliothek /
Main /
MainWs /
SlidingMenu


Also mein main ist abhängig von den anderen Paketen.

  • Haben Sie getter-setter-Methoden in der doInBackground-Methode ?
  • Ich habe keine getter oder setter-Methoden innerhalb der doInBackground() aber es gibt Fehler, Prüfung innerhalb dieser Methode, wenn es ist ein Fehler, ich nenne Methoden, die setter-Methoden..könnte das ein Faktor sein?
  • Sie haben einige code (Vermutung: einige JSON-Objekt-mapper-Bibliothek), die sich auf die Reflexion Zugriff auf Annotationen und der obfuscator Pausen, wenn Reflexion access verwendet wird. Sie müssen hinzufügen -keepattributes *Annotation*,EnclosingMethod -keep class reflection.using.package.name.** { *; }
  • Fügen Sie nicht die Klasse zu verschleiern, in Ihre proguard-Datei fügen Sie die Zeile mit Ihrer Klasse package-Namen. -keep class reflection.using.package.name.** { *; } in Ihrem proguard-Datei.
  • Ja, ich habe einige JSON-mapper in meinem tun, in den hintergrund. Wo sagt er-halten, Klasse spiegelung.mit.Paket.name.**' Muss ich ändern, dass '-halten, Klasse spiegelung.mit.com.DJ-DOO.name.**'?
  • ersetzen reflection.using.package.name mit dem Namen des Pakets der Bibliothek. Zum Beispiel, wenn es Jackson, org.codehaus. (Dass wahrscheinlich hält zu viel unobfuscated, sondern gibt Ihnen ein sicherer Ausgangspunkt.)
  • es ist jackson. Ich leider nicht tun, die webservices auf diese Arbeit. Es gibt eine Menge von ws-Aufrufe in dieser app. so habe ich es zu ändern '-halten-Klasse org.codehaus.** {*;}' ?
  • sourceforge.net/p/proguard/discussion/182456/thread/e4d73acf
  • danke für deine Hilfe, aber auch mit -keepattributes Annotation, EnclosingMethod und -keepnames-Klasse org.codehaus.jackson.** { *; } Ich bekomme immer noch die selben Probleme. In meinem Projekt-explorer habe ich mein Hauptprojekt Paket, aber ich habe auch andere Pakete, Gläser, mein Paket ist abhängig, könnte dies einen Unterschied machen? zum Beispiel alle meine webservice-Methoden sind im separaten Paket auf mein Haupt-Paket.
  • bitte siehe mein edit

InformationsquelleAutor DJ-DOO | 2013-10-03
Schreibe einen Kommentar