2012-05-25 59 views
0

我有一个混淆Android代码的问题。我使用Proguard 4.7版和Eclipse作为我的IDE。我改变了我的proguard.cfg这样:混淆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.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 
-keep public class * implements android.view.View.OnTouchListener 
-keep class * extends android.view.View { 
    public <init>(android.content.Context); 
    public <init>(android.content.Context, android.util.AttributeSet); 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
    public void set*(...); 
} 
-keep class * extends android.preference.Preference { 
    public <init>(android.content.Context); 
    public <init>(android.content.Context, android.util.AttributeSet); 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
    public void set*(...); 
}  
# LVL License binder class 
-keep class com.android.vending.licensing.ILicensingService  
# This is necessary for LVL among others. According to proguard doc java accesses enum fields by introspection. 
-keepclassmembers enum * { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
} 
#Optimization settings 
-dontoptimize 

当我编译我的项目,我得到一个错误,我解决不了。这是错误:

Unable to execute dex: Multiple dex files define Lchangebackground/app/OnSwipeListener 
Conversion to Dalvik Format failed: Unable to execute dex: Multiple dex files define Lchangebackground/app/OnSwipeListener 

回答

0

这通常意味着你包括一个库两次,或者你的类路径的其他问题。把所有的罐子放在libs下并清理你的项目。检查相同库的不同版本,并通过引用的库项目包括库。

+0

感谢您的答案,但我仍然不明白。 我该怎么做? – user1008497

+0

如果你有两个文件library-v1.jar和library-v2.jar包含(直接或间接),你会得到这个错误。检查你的项目依赖关系。 –

+0

是android.jar和proguard.jar包括在内? 还有一件事,如果我使用GUI proguard进行混淆,可以吗? – user1008497