1. 程式人生 > >Android關於使用混淆檔案proguard-project.txt筆記

Android關於使用混淆檔案proguard-project.txt筆記

關於使用還是很容易的,只要將eclipse專案中project.properties檔案中的

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 前的註釋#放開即可,然後右擊專案-->Android Tools-->Export Signed/Unsigned Application Package。再慢慢下一步就可以了。

通常情況下,我們只需要作以上幾步操作就能滿足需求,如果有一些特殊要求,某些類或者jar包不需要混淆,這個時候就需要修改proguard-project.txt檔案了。以下是網上搜索的網友分享的經驗:

1.在proguard-project.txt檔案中新增不需要混淆的類和第三方的jar包

 這個是保持自己包中不需要混淆的類,如果有些類呼叫了jni也不需要混淆,不然會出錯。還有如果專案中有其他專案作為library引入,那這些專案的一些類也不能混淆。
這個是保持專案中的第三方jar不混淆
另外加上上面幾句話,不然會在控制檯中報warning警告

2.另外還有其他一些經驗:

-injars  androidtest.jar【jar包所在地址】 
-outjars  out【輸出地址】

-libraryjars    'D:\android-sdk-windows\platforms\android-9\android.jar' 【引用的庫的jar,用於解析injars所指定的jar類】

-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 public abstract interface com.asqw.android.Listener{
public protected <methods>;  【所有方法不進行混淆】
}
-keep public class com.asqw.android{
public void Start(java.lang.String); 【對該方法不進行混淆】
}

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