研究了一下android的apk的签名和代码的混淆打包,如果不混淆打包,那么apk可以直接被人反编译出来查看源码,混淆打包虽然还是能看懂,但是没有那么好懂了,至少要话费些时间
如果不混淆,反编译后的代码如下:
基本上就是源码。
如果混淆后,反编译后的代码如下:
代码中出现很多的a、b、c之类的变量命名,所以要读懂就具有一定的困难了!
下面先说一下apk的签名:
1.apk签名必须先弄一个key,如何生成key呢?那么就要运用jdk来生成。
首先必须把jdk在系统环境变量中配置好。这个就不多说了,这是使用java就必须配置好的。
2.生成keystore
运行cmd,然后使用cd 进入 C:\Program Files\Java\jdk1.6.0_10\bin>(也就是你C盘的安装jdk的位置)目录下,然后输入keytool -genkey -alias
android.keystore -keyalg RSA -validity 50000 -keystore
android.keystore
参数意义:-validity主要是证书的有效期,写50000天。
红色的android字样可以随便改成自己的命名。
命令执行后会在C:\Program Files\Java\jdk1.6.0_10\bin>目录下生成 android.keystore文件。如下图:
弄到apk后就可以打包了,并且带上自己的签名。
在打包前我们需要加点东西来混淆代码,是我们打包后再反编译后无法正常查看代码。
混淆代码其实灰常简单,在需要打包的项目下找到 project.properties这个文件,打开然后在最下面加上一句话就ok了,如下图:
低版本的adt不是这样写的,高版本就这样写就ok了,如果是低版本的话是写成 proguard.config=proguard.cfg。不过现在一般都用不上了,都是搞版本的,在高版本中这样写就会在打包的最后步骤上报错:报错的大概内容是:
invalid proguard configuration file path c:.../proguard.cfg dose not exist or is not regular file
加完后就可以签名打包apk了。
在Eclipse界面点击 File-》Export...
然后就可以了!成功到处带签名的混淆代码的apk。