Android从2.3的SDK开始,将ProGuard混淆代码的功能加入了进来。

我们可以从android sdk的tools目录下看到有一个proguard目录。说明具有了代码混淆的功能。

至于如何进行代码的混淆。我们需要做的很简单:

1、在用eclipse生成的android工程中都有一个project.properties文件,我们需要在该文件中增加下面一行代码:

proguard.config=proguard.cfg

如图所示:

2、写混淆脚本proguard.cfg

我测试用的混淆脚本非常简单,只加了优化功能。如图所示:

对于proguard.cfg脚本的详细介绍参见:http://blog.csdn.net/laoyao_moyan/article/details/7353768

我们可以看到混淆android代码非常容易,但是需要注意的是:在eclipse下通过Run执行来生成的bin目录下的apk文件并没有被混淆,只有通过加入证书发布的apk才会混淆。

下面,我们来看看如何打包签名apk。

1、生成keystore;

在生成签名apk前,我们需要keystore,这个keystore可以用jdk下的keytool工具生成。

在cmd下,用命令行生成keystore如图所示:

按照上图中的命令,输入需要输入的内容。

其中,-alias android.keystore是生成的keystore别名;

-keyalg RSA是加密和数字签名的算法;

-validity 20000是有效天数

最后,会在jdk的bin目录下生成android.keystore文件。(这是因为keytool命令在jdk的bin目录下,当然,这个可以通过环境变量来设置)。

2、用keystore生成签名apk。

我们有了keystore,就可以生成签名apk了。

Eclipse中,右键需要签名的工程->Android tools->export signed application package...

这时会出现以下对话框:

点击下一步:

键入密码,点击Next:

键入密码,再次点击Next:

最后,点击Finish即可。

这时会在jdk的bin目录下生成带签名的apk。

下面是将我在github上的androidexample工程混淆了,效果如下:


最后,我们看运行混淆后的输出文件,在工程中会有生成的proguard文件夹,里面的文件具体内容是:

dump.txt

描述.apk包中所有class文件的内部结构。

mapping.txt

列出了源代码与混淆后的类,方法和属性名字之间的映射。这个文件对于在构建之后得到的bug报告是有用的,因为它把混淆的堆栈跟踪信息反翻译为源代码中的类,方法和成员名字。

seeds.txt

列出那些未混淆的类和成员。

usage.txt

列出从.apk剥离的代码。

这些文件放在以下目录中:

l<project_root>/bin/proguard当你使用Ant

l<project_root>/proguard当你使用Eclipse


更多相关文章

  1. 深入理解Android(2)——理解Android中的JNI(中)
  2. Android知识体系总结之Android部分之Android本地存储篇
  3. Android(安卓)Jni 开发(Android(安卓)studio)
  4. Android学习笔记之Android包、ADB介绍
  5. TextView文字阴影效果以及styles文件的使用
  6. Android中JNI的使用方法
  7. Android(安卓)中自定义属性(attr.xml,TypedArray)的使用!
  8. 在Activity中使用Menu
  9. NPM 和webpack 的基础使用

随机推荐

  1. rtx3080ti功耗 rtx3080ti价格
  2. 解决go get下载包失败问题
  3. i7 10700k和10700kf哪个好 i7 10700k和10
  4. Cookie和Session
  5. 10700kf和10700f差距有多大 10700kf和107
  6. Go语言基础之流程控制
  7. Vue(7):vue项目部署到服务器通过公网IP访
  8. LeetCode go
  9. 轮播图、懒加载
  10. 【jQuery基础入门】jQuery中常用Dom操作