对apk文件内容、数字证书、apk拆解、签名、重新打包等的一些实践

1、一个典型的apk文件通常有下列内容组成:
AndroidManifest.xml      全局配置文件
classes.dex                   Dalvik字节码
resources.arsc              编译后的二进制资源文件
META-INF\                   存放签名信息
res\                             存放资源文件

assets\                  可以存放配置文件或资源文件

2、数字证书,即密钥,也就是扩展名为.keystore的文件,生成一个数字证书的命令:
keytool -genkey -alias bdgame -keystore bdgame.keystore  -keyalg RSA -validity 20000

keytool命令位于JDK/bin目录下,是一个java数字证书的管理工具;

3、apk拆解
如果只是简单的查看apk文件内容,普通的RAR程序就可以打开apk;遇到需要用程序处理apk的情况下,推荐使用APKTool这款开源工具,附上链接:https://code.google.com/p/android-apktool/
附上APK拆解命令:apktool.bat d --no-src -f *.apk  temp

4、apk签名
命令:jarsigner -verbose -digestalg SHA1 -sigalg MD5withRSA  -storepass bdgame -keypass bdgame -keystore bdgame.keystore -signedjar demo-1234.apk .\output\unsigned.apk bdgame

jarsigner命令位于JDK/bin目录下,值得一提的是,我在批处理调用该函数时候,发现执行runtime.exec()后,一直未能成功返回process.waitFor(),就这么假死了,尝试了下,把参数 -verbose 去掉,执行就很顺利,感觉是输出内容太多,把程序堵了??

5、重新打包
命令:apktool temp temp.apk

拆包、再重新打包,为什么这么折腾啊?其实,这是为了修改渠道号,收到一个厂商的未签名包后,拆解这个APK包,修改渠道号,然后重新打包、签名,这么做,纯粹为了批量打渠道包。

你可能感兴趣的:(apk,jarsigner,keytool,apktool)