




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实训Android电话记录日志项目北京电子科技职业学院技能点:代码混淆1、代码混淆代码混淆(ProGuard)ProGuard是一个免费的JAVA类文件压缩,优化,混淆器。它探测并删除没有使用的类,字段,方法和属性,它删除没有用的说明并使用字节码得到最大优化,它使用无意义的名字重命名类,字段和方法。为什么要使用ProGuard?优化应用:创建紧凑的代码文档是为了更快的网络传输,快速装载和更小的内存占用;防止反向:创建的程序和程序库很难使用反向工程;预处理应用:充分利用JAVA的快捷加载的优点来提前检测和返回JAVA中存在的类文件。1、代码混淆ProGuard的基本方法1、有些什么参数可用?include{filename}从指定的文件中读取配置参数basedirectory{directoryname}指定基础目录为以后相对的档案文件injars{class_path}指定要处理的应用程序jar,war,ear的目录outjars{class_path}指定处理完后要输出的jar,war,ear目录的名称libraryjars{class_path}指定要处理的应用程序jar,war,ear和目录所需要的程序库文件dontskipnonpubliclibraryclasses指定不去忽略非公共的库类dontskipnonpubliclibraryclassmebmbers指定不去忽略可见的库类的成员1、代码混淆2、有哪些保留选项?keep{Modifier}{class_specification}保护指定的类文件和类的成员keepclassmembers{Modifier}{class_specification}保护指定类的成员,如果此类受到保护他们会保护得更好keepclasseswithmembers{class_specification}保护指定的类和类的成员,但条件是所有指定的类和类的成员是要存在的
-keepnams{class_specification}保护指定的类的成员和名称(如果他们不会在压缩的过程中被删除)keepclassmembernames{class_specification}保护指定类的成员的名称(如果他们不会在压缩的过程中被删除)keepclasseswithmembersnams{class_specification}保护指定的类和类成员的名称,如果所有指定的类成员出席(在压缩之后)printseeds{filename}列出类和类成员-keep选项的清单,标准输出到给定的文件1、代码混淆3、压缩
dontshrink不压缩输入的类文件
printusage{filename}whyareyoukeeping{class_specification}4、优化
-dontoptimize不优化输入的类文件
-assumenosideeffects{class_specification}优化时假设指定的方法,没有任何副作用
-allowaccessmodification优化时允许访问并修改有修饰符的类和类的成员1、代码混淆5、混淆
-dontobfuscate不混淆输入的类文件
-printmapping{filename}-applymapping{filename}重用映射增加混淆
-obfuscationdictionary{filename}使用给定文件中的关键字作为要混淆方法的名称
-overloadaggressively混淆时应用侵入式重载
-useuniqueclassmembernames确定统一的混淆类的成员名称来增加混淆
-flattenpackagehierarchy{package_name}重新包装所有重命名的包并放在给定的单一包中
-repackageclass{package_name}重新包装所有重命名的类文件中放在给定的单一包中
-dontusemixedcaseclassnames混淆时不会产生形形色色的类名
-keepattributes{attribute_name,...}保护给定的可选属性,例如LocalVariableTable(本地变量),SourceFile(源文件),InnerClasses(内部类)
-renamesourcefileattribute{string}设置源文件中给定的字符串常量2、Android中的混淆文件下面来介绍一下Android中的混淆文件。对应于项目下的文件2、Android中的混淆文件基本配置项1.指定要处理的应用程序jar,war,ear和目录所需要的程序库文件-libraryjarslibs/apns_1.0.6.jar-libraryjarslibs/armeabi/libBaiduMapSDK_v2_3_1.so-libraryjarslibs/armeabi/liblocSDK4.so-libraryjarslibs/core.jar-libraryjarslibs/gesture-imageview.jar-libraryjarslibs/gson-2.6.2.jar-libraryjarslibs/infogracesound.jar-libraryjarslibs/universal-image-loader-1.9.0.jar方法:libraryjarsjar路径->libraryjars项目中导入的jar包等现在Studio的话可以忽略此配置了。2、Android中的混淆文件2.不优化输入的class文件,默认情况下是启用优化的#不优化输入的class文件,默认情况下是启用优化的-dontoptimize3.Proguard对你的代码进行迭代优化的次数0~7,一直优化到代码不能被优化为止#Proguard对你的代码进行迭代优化的次数0~7,一直优化到代码不能被优化为止-optimizationpasses54.跳过库中非public的类,可以加快proguard处理速度;但是有些类库包含从public类中继承来的非public类。这时如果加了这条会产生一个warning(findclasses)-skipnonpubliclibraryclasses2、Android中的混淆文件5.指定不去忽略非公共的库类-dontskipnonpubliclibraryclasses6.指定不去忽略包可见的库类的成员。-dontskipnonpubliclibraryclassmembers7.确定统一的混淆类的成员名称来增加混淆-useuniqueclassmembernames8.混淆时不会产生形形色色的类名-dontusemixedcaseclassnames2、Android中的混淆文件9.混淆前认证,去掉可加快混淆速度-dontpreverify10.假如项目中有用到注解,保留注解,不混淆-keepattributes*Annotation*2、Android中的混淆文件Android中的配置项1.保留所有的v4包中类不被混淆-keepclassandroid.support.v4.**2.保留所有的v4包中接口不被混淆-keepinterfaceandroid.support.v4.**3.保留系统中继承v4/v7包的类,不被混淆-keepclassandroid.support.**{*;}-keepclassandroid.support.v4.**{*;}-keeppublicclass*extendsandroid.support.v4.**-keepinterfaceandroid.support.v4.app.**{*;}-keepclassandroid.support.v7.**{*;}-keeppublicclass*extendsandroid.support.v7.**-keepinterfaceandroid.support.v7.app.**{*;}-dontwarnandroid.support.**2、Android中的混淆文件4.保留系统中继实现v4/v7包的接口,不被混淆-keeppublicclass*implementsandroid.support.v4.**-dontwarnandroid.support.v4.**5.所有的native方法不被混淆-keepclasseswithmembersclass*{native<methods>;}6.自定义View构造方法不混淆-keepclasseswithmembersclass*{public<init>(android.content.Context);}-keepclasseswithmembersclass*{public<init>(android.content.Context,android.util.AttributeSet);}-keepclasseswithmembersclass*{public<init>(android.content.Context,android.util.AttributeSet,int);}2、Android中的混淆文件7.枚举不被混淆-keepclassmembersenum*{publicstatic**[]values();publicstatic**valueOf(java.lang.String);}8.release版不打印log-assumenosideeffectsclassandroid.util.Log{publicstatic***d(...);publicstatic***v(...);publicstatic***i(...);publicstatic***e(...);publicstatic***w(...);}2、Android中的混淆文件9.四大组件不能混淆-dontwarnandroid.support.v4.**-keepclassandroid.support.v4.app.**{*;}-keepinterfaceandroid.support.v4.app.**{*;}-keepclassandroid.support.v4.**{*;}-keeppublicclass*extendsandroid.app.Application-dontwarnandroid.support.v7.**-ernal.**{*;}-ernal.**{*;}-keepclassandroid.support.v7.**{*;}-keeppublicclass*extendsandroid.app.Activity-keeppublicclass*extendsandroid.app.Fragment-keeppublicclass*extendsandroid.app.Application-keeppublicclass*extendsandroid.app.Service-keeppublicclass*extendsandroid.content.BroadcastReceiver-keeppublicclass*extendsandroid.content.ContentProvider-keeppublicclass*extendsandroid.app.backup.BackupAgentHelper-keeppublicclass*extendsandroid.preference.Preference2、Android中的混淆文件10.Design包不混淆-dontwarnandroid.support.design.**-keepclassandroid.support.design.**{*;}-keepinterfaceandroid.support.design.**{*;}-keeppublicclassandroid.support.design.R$*{*;}11.确保JavaBean不被混淆-否则Gson将无法将数据解析成具体对象-keepclasscom.rair.circle.bean.**{
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度黑龙江省高校教师资格证之高等教育法规强化训练试卷A卷附答案
- 高职单招职业适应性测试试卷含答案
- (高清版)DB12∕T 580-2015 温室环境自动控制系统配置技术规范
- 帮扶工作成效交流发言稿
- 2024年语言理解与运用试题及答案
- 2024年三季度报山西地区A股每股资本公积金排名前十大上市公司
- 消防设施操作员问题解析试题及答案指南
- 2022-2023学年第一学期期末教学质量监测科学五年级上册期末测试卷含答案
- 诗歌的社会价值与美学探讨试题及答案
- 合同金额大小写(2025年版)
- 病历的书写基本规范培训讲座课件
- 2024-2030年中国矿热炉用开堵眼机行业发展状况规划分析报告
- 【MOOC】电子线路设计、测试与实验(一)-华中科技大学 中国大学慕课MOOC答案
- 新增供应商准入制度
- 制造业数字化车间与智能化生产流程实施方案
- 水泥稳定碎石在填筑路面基层中的应用
- 信息检索与利用课件 第8章 网络信息检索(下)
- 单招课件教学课件
- DB43T 1606-2019 烟花爆竹涉药机械设备安全论证规程
- 《产后出血预防与处理指南(2023)》解读课件
- 2024年安徽省初中(八年级)学业水平考试地理试卷含答案
评论
0/150
提交评论