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 代码混淆问题解决
- android的ant脚本自动生成模板
- android studio 已过时
- Android-->build.gradle-->buildTypes
- Android沉浸式状态栏和手机虚拟按钮不兼容冲突的
- Android——init.rc脚本
- Android(安卓)第三方库混淆proguard-rules,持续更新
- 尝试 Android(安卓)Bilibili/ijkplayer
- Android(安卓)Studio 自动生成注释(作者、日期、联系方式、描述)