apktool反编译APK全过程/V2签名/反编译apk
-r
参数不会反编译资源文件生成签名证书
使用keytool -genkey命令生成证书:
keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
- testalias是证书别名,可修改为自己想设置的字符,建议使用英文字母和数字
- test.keystore是证书文件名称,可修改为自己想设置的文件名称,也可以指定完整文件路径
- 36500是证书的有效期,表示100年有效期,单位天,建议时间设置长一点,避免证书过期
一:jarsigner 和 apksigner 两种签名工具的介绍
jarsigner
jarsigner 是 JDK 提供的针对 jar 包签名的工具,如果你本地已经安装了 Java 环境,会自带 jarsigner ,
比如我的 jarsigner 工具的位置在
/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/bin/jarsigner
效果图如下
apksigner
apksigner 是 Google 官方提供的针对 Android Apk 签名和验证的专用工具,位于 Android SDK / build-tools / SDK 版本 / apksigner 。
以我本地的 Android SDK 30.0.2 版本为例, apksigner 工具的位置在
/Users/suxing/Library/Android/sdk/build-tools/30.0.2/apksigner 。
效果图如下
如果你用的是 Android Studio 或者 IDEA ,安装这两个编辑器时会自动下载 Android SDK ,所以 apksigner 工具也不需要另外安装。
不过,无论是 apk 包 还是 jar 包,其本质都是 zip 格式的压缩包,如果只针对 v1 签名的话,两者的签名过程其实差不多。
apksigner 工具默认同时使用 v1 和 v2 签名,以兼容 Android 7 以下的系统版本。
如果报以上错误则需要进行 apksigner 命令签名
方式一:jarsigner
jarsigner 只支持 v1 签名,先来看下使用命令,下面命令中涉及到路径的都是文件的绝对路径。
jarsigner -verbose -keystore 证书签名文件路径 -signedjar 签名后新Apk路径.apk 要签名的Apk路径.apk 证书签名别名
方式二:apksigner
apksigner 默认同时支持 v1 和 v2 签名,先来看下使用命令,下面命令中涉及到路径的都是文件的绝对路径。
apksigner sign --ks 证书签名文件路径 --ks-key-alias 证书签名别名 要签名的apk路径.apk
./apksigner sign --ks /Users/abc/Downloads/test1/dist/test2.keystore --ks-key-alias org.telegram.messenger /Users/binghexijian/Downloads/test1/dist/abc.apk