Android代码混淆
Android代码混淆
这是在工程中的proguard-project.txt中发现的
#ToenableProGuardinyourproject,editproject.properties
#todefinetheproguard.configpropertyasdescribedinthatfile.
#
#AddprojectspecificProGuardruleshere.
#Bydefault,theflagsinthisfileareappendedtoflagsspecified
#in${sdk.dir}/tools/proguard/proguard-android.txt
#YoucanedittheincludepathandorderbychangingtheProGuard
#includepropertyinproject.properties.
#
#Formoredetails,see
#http://developer.android.com/guide/developing/tools/proguard.html
#Addanyprojectspecifickeepoptionshere:
#IfyourprojectusesWebViewwithJS,uncommentthefollowing
#andspecifythefullyqualifiedclassnametotheJavaScriptinterface
#class:
#-keepclassmembersclassfqcn.of.javascript.interface.for.webview{
#public*;
#}
#Donotmodifythisfile--YOURCHANGESWILLBEERASED!
#
#ThisfilemustbecheckedinVersionControlSystems.
#
#TocustomizepropertiesusedbytheAntbuildsystemuse,
#"build.properties",andoverridevaluestoadaptthescripttoyour
#projectstructure.
#Projecttarget.
target=android-15
proguard.config=proguard.cfg
Android代码混淆,如何过滤掉反射的R文件及第三方包?
解决方案:在Proguard.cfg方件中添加以下设定:
过滤R文件的混淆:
-keepclass**.R$*{*;}
过滤第三方包的混淆:
-keepclasspackagename.**{*;}(其中packagename为第三方包的包名)
Android导入第三方jar包,proguard混淆脚本(屏蔽警告,不混淆第三方包)
最近1个项目中需要导入移动MM的第三方计费包,混淆时用到了如下脚本,可屏蔽警告,不混淆第三方包指定内容。
非常有效
proguard.cfg文件
-optimizationpasses5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-ignorewarnings//这1句是屏蔽警告,脚本中把这行注释去掉
-verbose
-optimizations!code/simplification/arithmetic,!field/*,!class/merging/*
//这1句是导入第三方的类库,防止混淆时候读取包内容出错,脚本中把这行注释去掉
-libraryjarslibs/mmbilling.jar
-dontwarn//dontwarn去掉警告
-dontskipnonpubliclibraryclassmembers
-keeppublicclass*extendsandroid.app.Activity
-keeppublicclass*extendsandroid.app.Application
-keeppublicclass*extendsandroid.app.Service
-keeppublicclass*extendsandroid.content.BroadcastReceiver
-keeppublicclass*extendsandroid.content.ContentProvider
-keeppublicclass*extendsandroid.app.backup.BackupAgentHelper
-keeppublicclass*extendsandroid.preference.Preference
-keeppublicclasscom.android.vending.licensing.ILicensingService
-keepclasseswithmembernamesclass*{
native<methods>;
}
-keepclasseswithmembernamesclass*{
public<init>(android.content.Context,android.util.AttributeSet);
}
-keepclasseswithmembernamesclass*{
public<init>(android.content.Context,android.util.AttributeSet,int);
}
-keepclassmembersenum*{
publicstatic**[]values();
publicstatic**valueOf(java.lang.String);
}
-keepclass*implementsandroid.os.Parcelable{
publicstaticfinalandroid.os.Parcelable$Creator*;
}
//这4句是不混淆第三方包中的指定内容,脚本中把这行注释去掉-keepclasscom.ccit.**{*;}
-keepclassccit.**{*;}
-keepclasscom.aspire.**
-keepclassmm.vending.**
更多相关文章
- Android通过HttpURLConnection上传多个文件至服务器 - 流传输
- Android写文件到SDCard的一般过程和代码
- android的ant脚本自动生成模板
- Android 获取本地音乐文件
- Android播放在线音乐文件
- 文件读写
- Android读取Txt文件
- android 不使用布局文件,完全由代码控制布局实例