- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
APP项目开发完成之后,当测试人员测试了,没有Bug了,一般情况下,公司会有一些
技术人员负责发布、推广APP产品。这是一般正规的大公司会有专门的市场推广部门,技术
维护部门,对APP进行加密混淆打包,如:使用Ant加密,还有使用第三方的加密方式如爱
加密等。想必APP产品为什么需要加密混淆,做为开发人员、老板都明白其中的隐含之处。
然而,还有一种方式可以打包混淆APP,那就是android通过eclipse混淆代码打包+
proguard方式。具体的步骤如下:
一、android应用程序的混淆打包
1.在工程文件perties中加入下
proguard.config=proguard.cfg,如下所示:
target=android-8
proguard.config=proguard.cfg
Eclipse会通过此配置在工程目录生成proguard.cfg文件
2.生成keystore(如已有可直接利用)
按照下面的命令行在D:\ProgramFiles\Java\jdk1.6.0_07\bin目录下,
输入keytool-genkey-aliasandroid.keystore-keyalgRSA-validity100000-keystore
android.keystore
参数意义:-validity主要是证书的有效期,写100000天;空格,退格键都
算密码。
命令执行后会在D:\ProgramFiles\Java\jdk1.6.0_07\bin目录下生成
android.keystore文件。
3.在Eclipce的操作
File-Export-ExportAndroidApplication-Selectproject-Using
theexistingkeystore,andinputpassword-selectthedestinationAPKfile
经过混淆后的源代码,原先的类名和方法名会被类似a,b,c。。。的字符所替
换,混淆的原理其实也就是类名和方法名的映射。
proguard自己考一个就行
二、proguard原理
Java代码编译成二进制class文件,这个class文件也可以反编译成源代码,除了注释
外,原来的code基
本都可以看到。为了防止重要code被泄露,我们往往需要混淆(Obfuscationcode,也
就是把方法,字段,包和
类这些java元素的名称改成无意义的名称,这样代码结构没有变化,还可以运行,但是想
弄懂代码的架构却很难。
proguard就是这样的混淆工具,它可以分析一组class的结构,根据用户的配置,然后
把这些class文件的可以混
淆java元素名混淆掉。在分析class的同时,他还有其他两个功能,删除无效代码
(Shrinking收缩),和代码进
行优化(OptimizationOptions)。
缺省情况下,proguard会混淆所有代码,但是下面几种情况是不能改变java元素的名称,
否则就会这样就
会导致程序出错。
一,我们用到反射的地方。
二,我们代码依赖于系统的接口,比如被系统代码调用的回调方法,这种情况最复杂。
三,是我们的java元素名称是在配置文件中配置好的。
所以使用proguard时,我们需要有个配置文件告诉proguard那些java元素是不能混淆的。
三、proguard配置
1、最常用的配置选项
-dontwarn缺省proguard会检查每一个引用是否正确,但是第三方库里面往往有些不会用
到的类,没有正确引用。如果不配置的话,系统就会报错。
-keep指定的类和类成员被保留作为入口。
-keepclassmembers指定的类成员被保留。
-keepclasseswithmembers指定的类和类成员被保留,假如指定的类成员存在的话。
2、proguard问题和风险
代码混淆后虽然有混淆优化的好处,但是它往往也会带来如下的几点问题
1,混淆错误,用到第三方库的时候,必须告诉proguard不要检查,否则proguard会报
错。
2,运行错误,当code不能混淆的时候,我们必须要正
您可能关注的文档
最近下载
- 四川省成都市西川中学2024-2025学年七年级上学期数学期中 试卷.docx VIP
- 抖音大众评审规则能力考试20题答案题库.docx
- AD832I机台操作指引.pdf VIP
- 2024外研版英语(三起)五年级下册全册教案(含教学计划).pdf VIP
- 2025年全国保安员职业技能上岗证考试题库(含答案).pdf
- 2025年全国保安员职业技能上岗证考试题库(含答案).pdf VIP
- 人教版小学数学四年级下册第三单元运算律第1课时《加法交换律和加法结合律》示范课教案.docx
- 年初三年级一模质量分析会.ppt VIP
- 2025中央广播电视总台招聘笔试备考题库及答案解析.docx
- 2025年云南省初中学业水平考试数学模拟卷(三).doc VIP
文档评论(0)