2014-05-21 3 views
1

После запутывания с ProGuard помощью ADT я следующее сообщение об ошибке при выполнении приложения:ошибка после обфускации андроид приложение АКРА

05-20 19:59:20.158: E/AndroidRuntime(14515): FATAL EXCEPTION: main 
05-20 19:59:20.158: E/AndroidRuntime(14515): java.lang.NoSuchFieldError: PUT 

Это, кажется, из-за отсутствия АКрА библиотек. Progaurd-project.txt является:

-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-verbose 
-dontoptimize 
-dontpreverify 

-keepattributes *Annotation* 
-keep public class com.google.vending.licensing.ILicensingService 
-keep public class com.android.vending.licensing.ILicensingService 

# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native 
-keepclasseswithmembernames class * { 
    native <methods>; 
} 

# keep setters in Views so that animations can still work. 
# see http://proguard.sourceforge.net/manual/examples.html#beans 
-keepclassmembers public class * extends android.view.View { 
    void set*(***); 
    *** get*(); 
} 

# We want to keep methods in Activity that could be used in the XML attribute onClick 
-keepclassmembers class * extends android.app.Activity { 
    public void *(android.view.View); 
} 

# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations 
-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 **.R$* { 
    public static <fields>; 
} 

# The support library contains references to newer platform versions. 
# Don't warn about those in case this app is linking against an older 
# platform version. We know about them, and they are safe. 
-dontwarn android.support.** 


# AWS: 
-keep class org.apache.commons.logging.**    { *; } 
-keep class com.fasterxml.jackson.**     { *; } 
-keep class com.amazonaws.services.sqs.QueueUrlHandler { *; } 
-keep class com.amazonaws.javax.xml.transform.sax.*  { public *; } 
-keep class com.amazonaws.javax.xml.stream.**   { *; } 
-keep class com.amazonaws.services.**.model.*Exception* { *; } 
-keep class org.codehaus.**        { *; } 
-keep class com.amazonaws.**       { *; } 
-keep class com.amazonaws.services.sqs.QueueUrlHandler { *; } 
-keep class com.amazonaws.internal.**     { *; } 
-keep class com.amazon.**        { *; } 
-keepattributes Signature,*Annotation* 

# Otherwise return Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can't find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry 
-dontwarn com.fasterxml.jackson.databind.** 
-dontwarn javax.xml.stream.events.** 
-dontwarn org.codehaus.jackson.** 
-dontwarn org.apache.commons.logging.impl.** 
-dontwarn org.apache.http.conn.scheme.** 
-dontwarn com.amazonaws.services.securitytoken.** 
-dontwarn com.fasterxml.jackson.databind.** 
-dontwarn org.apache.http.annotation.** 
-dontwarn org.ietf.jgss.** 
-dontwarn org.w3c.dom.bootstrap.** 
-dontwarn com.amazonaws.** 

-libraryjars /home/alejo/Documentos/Android/adt-bundle-linux-x86_64-20140321/sdk/platforms/android-19/android.jar 

Как я мог исключить запутывание от всех внешних библиотек ?, чтобы предотвратить эти типы ошибок.

ответ

3

Я не знаю, как предотвратить обфускацию всех внешних библиотек, но, надеюсь, this doc доставит вас за ваши проблемы, связанные с ACRA.

В общем, большинство Android 3rdparty libs будут включать раздел в свою документацию о том, как настроить Proguard, чтобы играть хорошо с lib.

0
-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 com.android.vending.licensing.ILicensingService 
-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 *; 
} 

Согласно https://github.com/ACRA/acra/wiki/Proguard

 Смежные вопросы

  • Нет связанных вопросов^_^