android 可以通过android studio进行打包,但是了解一下命令行打包的过程还是很有意义的
1.keytool 生成 android 签名
命令如下: $keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
-genkey 生成keystore签名
-v 显示签名信息
-keystore 生成的keystore的名字
-alias 别名
-keyalg RAS 指定加密方式为RAS
-keysize 指定秘钥长度
-validity 指定有效期 (单位天)
2.查看生成的签名信息
keytool -list -v -keystore my-release-key.keystore -storepass xxxxx
3.对为签名的apk进行签名
jarsigner -verbose -keystore magick.keystore -signedjar Magick.apk Magick_unsigned.apk magick.keystore
-verbose 输出签名详细信息
-keystore 指定密钥对的存储路径
-signedjar 后面三个参数分别是 签名后的APK包 未签名的APK包 和 密钥对的别名
或者也可以这么签名(来自android官方文档)
$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name
-sigalg 签名算法的名称
-digestalg 摘要算法的名称
4 verify that you apt is signed
jarsigner -verify -verbose -certs my_application.apk
5 优化apk包
zipalign -f -v 4 Magick.apk Magick_zip.apk
-f 强制覆盖已有的文件
-v 输出详细内容
4 指定档案整理的字节数,一般为4,及32位。如果以后android的设备有64位的,可能要改成8吧。
Magick.apk 是未整理的apk文件名
Magick_zip.apk 是整理后的apk文件名
6 关于aapt
aapt即Android Asset Packaging Tool,在SDK的build-tools目录下。该工具可以查看,创建, 更新ZIP格式的文档附件(zip, jar, apk)。也可将资源文件编译成二进制文件,尽管你可能没有直接使用过aapt工具,但是build scripts和IDE插件会使用这个工具打包apk文件构成一个Android 应用程序。 在使用aapt之前需要在环境变量里面配置SDK-tools路径,或者是路径+aapt的方式进入aapt。
aapt l <file_path.apk>
aapt dump [value] mm.apk
value的取值:
badging
permissions
resources
configurations
xmltree
xmlstrings
反编译apk分别用到apktool,dex2jar,jd-gui
apktool:把apktool和apktool.jar 拷贝到/usr/local/bin目录下,chmod +x
打开终端 命令—》 1.apktool -d ss.apk 2 apktool -b ss
dex2jar :将apktool加压出来的classes.dex文件拷贝到decode文件夹下
运行 sh dex2jar.sh decode/classes.dex 加压出classes_dex2jar.jar文件
jd-gui:这个就不用说了吧