2011-11-17 65 views
1

我正在使用proGuard來混淆我的應用程序。我在我的應用程序中包含了圖書館罐,我使用ant來構建應用程序。但在建設階段,我得到以下例外。Android中的Proguard

-dex: 
     [dex] Converting compiled files and external libraries into /home/fiberlink/Desktop/Work/MaaS360/Maas360ControlAgent/bin/classes.dex... 
     [dx] 
     [dx] UNEXPECTED TOP-LEVEL EXCEPTION: 
     [dx] java.util.zip.ZipException: error in opening zip file 
     [dx]  at java.util.zip.ZipFile.open(Native Method) 
     [dx]  at java.util.zip.ZipFile.<init>(ZipFile.java:127) 
     [dx]  at java.util.zip.ZipFile.<init>(ZipFile.java:144) 
     [dx]  at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:206) 
     [dx]  at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131) 
     [dx]  at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109) 
     [dx]  at com.android.dx.command.dexer.Main.processOne(Main.java:418) 
     [dx]  at com.android.dx.command.dexer.Main.processAllFiles(Main.java:329) 
     [dx]  at com.android.dx.command.dexer.Main.run(Main.java:206) 
     [dx]  at com.android.dx.command.dexer.Main.main(Main.java:174) 
     [dx]  at com.android.dx.command.Main.main(Main.java:95) 
     [dx] 1 error; aborting 

我沒有得到的是什麼問題...有人請幫助...

回答

0

什麼是您的proguard.cfg文件是什麼樣子?您還需要default.properties文件中的proguard.config=proguard.cfg(稍後在API級別上更改)。

礦井在下面,工作正常。

-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 

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

我的proguard.cfg與你的相同,除了我使用一些庫罐。如果我沒有啓用proguard,那麼我不會得到像這樣的任何錯誤 – Jithin

+0

從proguard排除你的lib – xDragonZ

+0

怎麼可以做? – Jithin

0

到一定不要忘記關於Android的任何特殊使用ProGuard時,是採取的基本文件的一個SDK中,設在這裏的最佳方式:

C:\SDK\Android\sdk\tools\proguard\examples\android.pro 

這個文件是很好記錄並預設需要爲Android應用程序設置的每個參數。