APP打包混淆qpk代码.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
? 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:\Program Files\Java\jdk1.6.0_07\bin目录下,输入keytool -genkey -alias android.keystore -keyalg RSA -validity 100000 -keystore android.keystore ? ? ? ? ?参数意义:-validity主要是证书的有效期,写100000天;空格,退格键 都算密码。 ? ? ? ? ?命令执行后会在D:\Program Files\Java\jdk1.6.0_07\bin目录下生成 android.keystore文件。 ? ? ?3. 在Eclipce的操作 ? ? ? ? File - Export - Export Android Application - Select project - Using the existing keystore , and input password - select the destination APK file? ? ? ? ? 经过混淆后的源代码,原先的类名和方法名会被类似a,b,c。。。的字符所替换,混淆的原理其实也就是类名和方法名的映射。 ? ? proguard 自己考一个就行 ? 二、proguard 原理 Java代码编译成二进制class 文件,这个class 文件也可以反编译成源代码 ,除了注释外,原来的code 基 本都可以看到。为了防止重要code 被泄露,我们往往需要混淆(Obfuscation code , 也就是把方法,字段,包和 类这些java 元素的名称改成无意义的名称,这样代码结构没有变化,还可以运行,但是想弄懂代码的架构却很难。 ?proguard 就是这样的混淆工具,它可以分析一组class 的结构,根据用户的配置,然后把这些class 文件的可以混 淆java 元素名混淆掉。在分析class 的同时,他还有其他两个功能,删除无效代码(Shrinking 收缩),和代码进 行优化 (Optimization Options)。 缺省情况下,proguard 会混淆所有代码,但是下面几种情况是不能改变java 元素的名称,否则就会这样就 会导致程序出错。 一, 我们用到反射的地方。 二, 我们代码依赖于系统的接口,比如被系统代码调用的回调方法,这种情况最复杂。 三, 是我们的java 元素名称是在配置文件中配置好的。 所以使用proguard时,我们需要有个配置文件告诉proguard 那些java 元素是不能混淆的。 ? 三、proguard 配置 1、最常用的配置选项 -dontwarn 缺省proguard 会检查每一个引用是否正确,但是第三方库里面往往有些不会用到的类,没有正确引用。如果不配置的话,系统就会报错。 -keep 指定的类和类成员被保留作为 入口 。 -keepclassmembers 指定的类成员被保留。 -keepclasseswithmembers 指定的类和类成员被保留,假如指定的类成员存在的话。 2、proguard 问题和风险 代码混淆后虽然有混淆优化的好处,但是它往往也会带来如下的几点问题 1,混淆错误,用到第三方库的时候,必须告诉 proguard 不要检查,否则proguard 会报错。 2,运行错误,当code 不能混淆的时候,我们必须要正确配置,否则程序会运行出错,这种情况问题最多。 3,调试苦难,出错了,错误堆栈是混淆后的代码 ,自己也看不懂。 为了防止混淆出问题,你需要熟悉你所有的code ,系统的架构 ,以及系统和你code的集成的接口,并细心分析。 同时你必须需要一轮全面的

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档