android 混淆打包
ProGuard是一個壓縮、優化和混淆Java字節碼文件的免費的工具,它可以刪除無用的類、字段、方法和屬性。可以刪除沒用的注釋,最大限度地優化字節碼文件。它還可以使用簡短的無意義的名稱來重命名已經存在的類、字段、方法和屬性。這樣做的結果是更小的jar、apk……,并且更難被反編譯。
Android的編譯環境中已默認集成了Proguard,但只有在release模式下編譯才會運行。此狀態下,它會在用到ant release或是Eclipse的導出向導時,自動檢查proguard.config屬性是否已設置,如果設置了,ProGuard就會在打成包之前,自動處理程序的字節碼。Debug模式下,之所以不觸發,是因為混淆后的代碼會使得調試變得更加累贅。
前面已經進行了簽名打包,接下來
將proguard.config放在項目的根目錄下
在ant.properties再添加proguard.config=proguard.cfg
在project.properties里添加proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
注意:在運行過程中可能會出現
D:\Program Files\android-sdk-windows\tools\ant\build.xml:871: Please correct the above warnings first.
而導致BUILD FAILED
在proguard.config里添加-dontwarn即可成功
proguard.config的內容為:
-keep public class <MyClass>
-dontwarn
-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 *;
}