GitHubMac4Android/AndroidResign 是一款专为Mac用户设计的APK重签名工具。它提供了一个简洁的bash脚本,帮助开发者轻松完成APK文件的重签名过程。
使用方法:
- 首先,创建一个名为resign.sh的新脚本文件,并将以下代码复制进去。确保所有中文注释已被删除,以避免脚本运行时出现错误。
- 给予脚本执行权限:在终端中输入
chmod 777 resign.sh
。 - 切换至包含resign.sh脚本的目录,然后按照如下格式输入命令行参数:
./resign.sh [源APK路径] [目标APK路径] [密钥库路径] [密钥库密码] [密钥密码] [密钥别名]
示例命令行参数:
tony$ ./resign.sh /path/to/source.apk /path/to/destination.apk /path/to/keystore.jks my_storepass my_keypass my_alias
脚本内部逻辑解析:
- 接收并存储用户输入的参数,包括源APK路径、目标APK路径、密钥库路径及其相关密码和密钥别名。
- 清除源APK中的旧签名信息,通过命令
zip -d [源APK路径] META-INF/*
实现。 - 利用
jarsigner
工具进行新的签名操作,确保签名过程中使用了指定的密钥库、密码及算法。
完整脚本代码如下:
#!/bin/bash
echo "Setting up for re-signing..."
apk_source=$1
apk_dest=$2
keystore_path=$3
storepass=$4
keypass=$5
alias=$6
echo "Source path: ${apk_source}"
echo "Destination path: ${apk_dest}"
echo "Removing old META-INF..."
zip -d $apk_source META-INF/*
echo "Re-signing process started!"
echo "Executing jarsigner with parameters..."
jarsigner -digestalg SHA1 -sigalg MD5withRSA -tsa http://timestamp.digicert.com -verbose -keystore $keystore_path -storepass $storepass -keypass $keypass -signedjar $apk_dest $apk_source $alias
echo "Re-signing completed successfully!"