文档详情

APP打包混淆apk代码.pdf

发布:2025-02-14约7.82千字共6页下载文档
文本预览下载声明

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不能混淆的时候,我们必须要正

显示全部
相似文档