#!/bin/bash
echo ======================================
echo Mac环境下签名须知
echo 1、将此.command脚本放在您需要签名的apk同级目录下(.jks文件也需要放在此根目录)
echo 2 使用签名和对齐的时候需要把工具链路写全
echo 3、修改KEYSTORE_PATH路径到你生成的keystore目录
echo 4、将FILE_NAME设置为需要签名的apk文件名
echo 5、将keystore的密码和别名alias修改为自己的
echo 6、执行结果将生成一个sign文件夹和一个zipalign文件夹,分别存放了签名后的APK和简化后的APK,签名完成删除zipalign
echo 7、如果出现未提供-tsa或-tsacert的警告,签名指令后加上-tsa https://timestamp.geotrust.com/tsa 如有问题请查阅百度、google
echo ======================================
echo "参数一:$0"
echo "参数二:$1"
# 当前路径
Cur_Dir=$(cd `dirname $0`; pwd)
echo 当前路径: ${Cur_Dir}
# 文件名取第二个参数
FILE_NAME=$1
# 如果没有输入参数校验一下
if [ ! -n "$1" ] ;then
echo "必须传入参数,比如7.1.0" exit
else
echo ----- 参数正确,开始配置-----
fi
# Android SDK路径
ANDROID_TOOLS_PATH="/Users/hz_wave/Library/Android/sdk"
#签名build-tools路径
#BUILD_TOOLS_PATH = /Users/hz_wave/Library/Android/sdk/build-tools/29.0.3
#签名工具路径
#SIGN_TOOLS_PATH = "/Users/hz_wave/Library/Android/sdk/build-tools/29.0.3/apksigner"
#对齐工具路径
#ZIPALIGN_TOOLS_PATH = "/Users/hz_wave/Library/Android/sdk/build-tools/29.0.3/zipalign"
# keystore路径
KEYSTORE_PATH="${Cur_Dir}/xxxxxx.jks"
# apk存放路径
APK_PATH="${Cur_Dir}/${FILE_NAME}.apk"
# 签名的apk
SIGN_APK_PATH="${Cur_Dir}/sign/${FILE_NAME}_sign.apk"
# 简化的apk
ZIPALIGN_APK_PATH="${Cur_Dir}/zipalign/${FILE_NAME}_zipalign.apk"
# alias名字
ALIAS_NAME="xxxxx"
# keystore 密码
STOREPASS=xxxxx
echo ----- 开始执行签名和对齐了-----
# 如果sign文件夹不存在就创建一个
if [ ! -d "${Cur_Dir}/sign" ]; then
mkdir "${Cur_Dir}/sign"
fi
# 如果zipalign文件夹不存在就创建一个
if [ ! -d "${Cur_Dir}/zipalign" ]; then
mkdir "${Cur_Dir}/zipalign"
fi
# 如果同名简化apk存在,删除之
if [ ! -d "${ZIPALIGN_APK_PATH}" ]; then
rm -if "${ZIPALIGN_APK_PATH}"
fi
echo ----- 对齐简化开始 -----
# 执行对齐简化
echo ${APK_PATH}
/Users/hz_wave/Library/Android/sdk/build-tools/29.0.3/zipalign -p -f -v 4 ${APK_PATH} ${ZIPALIGN_APK_PATH}
echo ----- 对齐简化结束-----
# 执行签名
echo -----签名开始-----
#备注:Mac环境使用全路径 apksigner,前面去申明的话报错找不到,不知道为啥
/Users/hz_wave/Library/Android/sdk/build-tools/29.0.3/apksigner sign --v1-signing-enabled true --v2-signing-enabled true --ks ${KEYSTORE_PATH} --ks-key-alias ${ALIAS_NAME} --ks-pass pass:${STOREPASS} --key-pass pass:${STOREPASS} -in ${ZIPALIGN_APK_PATH} -out ${SIGN_APK_PATH}
#这种方式先不管 jarsigner -verbose -keystore ${KEYSTORE_PATH} -storepass ${STOREPASS} -signedjar ${SIGN_APK_PATH} -digestalg SHA1 -sigalg MD5withRSA ${APK_PATH} ${ALIAS_NAME}
pwd
cd ${Cur_Dir}
ls
cd sign
ls
cd ..
ls
echo -----签名结束-----
#移除对齐简化的文件,保留签名文件即可
rm -rf zipalign
ls
echo OK!完成签名工作,请查看对应的包,需要安装到手机测试下哦!!!