android应用程序的混淆打包(转)
android應(yīng)用程序的混淆打包 1?.?在工程文件project.properties中加入下proguard.config=proguard.cfg?,?如下所示:
target=android-8
proguard.config=proguard.cfg
Eclipse會(huì)通過此配置在工程目錄生成proguard.cfg文件
?2?.?生成keystore?(如已有可直接利用)
按照下面的命令行?在D:\Program?Files\Java\jdk1.6.0_07\bin>目錄下,輸入keytool?-genkey?-alias?android.keystore?-keyalg?RSA?-validity?100000?-keystore?android.keystore
參數(shù)意義:-validity主要是證書的有效期,寫100000天;空格,退格鍵?都算密碼。
命令執(zhí)行后會(huì)在D:\Program?Files\Java\jdk1.6.0_07\bin>目錄下生成?android.keystore文件。
?3.?在Eclipce的操作
File?->?Export?->?Export?Android?Application?->?Select?project?->?Using?the?existing?keystore?,?and?input?password?->?select?the?destination?APK?file?
?經(jīng)過混淆后的源代碼,原先的類名和方法名會(huì)被類似a,b,c。。。的字符所替換,混淆的原理其實(shí)也就是類名和方法名的映射。
但4大組件并沒有混淆(所有在清單文件定義的組件不能被混淆),因?yàn)橄到y(tǒng)需要通過清單文件來查找和運(yùn)行應(yīng)用程序。
?proguard.cfg 文件代碼解讀
-optimizationpasses?5 ?->設(shè)置混淆的壓縮比率?0?~?7?
-dontusemixedcaseclassnames?->?Aa?aA?
-dontskipnonpubliclibraryclasses?->如果應(yīng)用程序引入的有jar包,并且想混淆jar包里面的class?
-dontpreverify?
-verbose?->混淆后生產(chǎn)映射文件?map?類名->轉(zhuǎn)化后類名的映射
?-optimizations?!code/simplification/arithmetic,!field/*,!class/merging/* ?->混淆采用的算法.
?-keep?public?class?*?extends?android.app.Activity ??->所有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>; ??->?所有native的方法不能去混淆.?
}
?-keepclasseswithmembers?class?*?{
????public?<init>(android.content.Context,?android.util.AttributeSet);
????-->某些構(gòu)造方法不能去混淆
}
?-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?{ ??->?aidl文件不能去混淆.?
??public?static?final?android.os.Parcelable$Creator?*;
}
轉(zhuǎn)載于:https://www.cnblogs.com/godcok/p/4448634.html
總結(jié)
以上是生活随笔為你收集整理的android应用程序的混淆打包(转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 坦克耗油量大吗?在野外没油了怎么办
- 下一篇: Oracle中NVARCHAR2与VAR