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

从 脚本中可以看到,混淆中保留了继承自Activity、Service、Application、BroadcastReceiver、 ContentProvider等基本组件以及com.android.vending.licensing.ILicensingService, 并保留了所有的Native变量名及类名,所有类中部分以设定了固定参数格式的构造函数,枚举等等。(详细信息请参考<proguard_path>/examples中的例子及注释。) 让proguard.cfg起作用的做法很简单,就是在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”就可以了 完整的default.properties文件应该如下: #ThisfileisautomaticallygeneratedbyAndroidTools.
#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.**

更多相关文章

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

随机推荐

  1. Android(安卓)官方架构组件(三)——ViewMod
  2. Android API 中文 (53) ―― BaseAdapter
  3. android wifi debug 调试
  4. 【流媒體】 Android 实时视频编码—H.264
  5. Android(安卓)EditText常用技能,包括clear
  6. Coroutines in Android - One Shot and M
  7. -用Gradle 构建你的android程序
  8. Android(安卓)使用Stetho在Chrome浏览器
  9. 把TextView中的文字添加阴影效果及Style
  10. Android中的?attr/和?android:attr/