1).安装jdk1.8.0_144
2).安装android-sdk_r24.4.1-linux.tgz
3).上传签名文件android.keystore
4).写shell脚本signapk.sh
signapk.sh
#!/bin/bash
# param1, APK file: Calculator_debug.apk
# param2, keystore location: ~/.android/debug.keystore
# param3, key storepass: android
# param4, key alias: androiddebugkey
USER_HOME=$(eval echo ~${SUDO_USER})
查询CPU数量,返回的是CPU核数
CPUNUM=` cat /proc/cpuinfo | grep "cpu cores"|wc -l`
定义CPU的总数
let CPUNUM=CPUNUM-1
统计签名文件的个数
JARSIGNERNUM=`ps ax|grep jarsigner|wc -l`
如果正在签名的文件大于定义的CPU的总数那么退出。
if [ $JARSIGNERNUM -gt $CPUNUM ] ;then
echo "too many"
exit 0;
fi
# use my debug key default
APK=$1
KEYSTORE="签名文件路径"
STOREPASS="签名文件密码"
ALIAS="别名"
if [ $# -ne 2 ]; then
echo "usage:"
echo "jarsigner source_apk desnation_apk"
APK_BASENAME=$(basename $APK)
#SIGNED_APK="signed_"$APK_BASENAME
SIGNED_APK=$2
#debug
#echo apk: $APK
#echo keystore: $KEYSTORE
#echo storepass: $STOREPASS
#echo alias: $ALIAS
#!/bin/bash
# param1, APK file: Calculator_debug.apk
# param2, keystore location: ~/.android/debug.keystore
# param3, key storepass: android
# param4, key alias: androiddebugkey
USER_HOME=$(eval echo ~${SUDO_USER})
CPUNUM=` cat /proc/cpuinfo | grep "cpu cores"|wc -l`
let CPUNUM=CPUNUM-1
JARSIGNERNUM=`ps ax|grep jarsigner|wc -l`
if [ $JARSIGNERNUM -gt $CPUNUM ] ;then
echo "too many"
exit 0;
fi
# use my debug key default
APK=$1
KEYSTORE="/usr/java/android.keystore"
STOREPASS="twomonth"
ALIAS="android"
if [ $# -ne 2 ]; then
echo "usage:"
echo "jarsigner source_apk desnation_apk"
APK_BASENAME=$(basename $APK)
#SIGNED_APK="signed_"$APK_BASENAME
SIGNED_APK=$2
#debug
#echo apk: $APK
#echo keystore: $KEYSTORE
#echo storepass: $STOREPASS
#echo alias: $ALIAS
#echo $APK_BASENAME
# delete META-INF folder
#zip -d $APK META-INF/\*
$STOREPASS $APK $ALIAS
/usr/java/jdk1.8.0_131/bin/jarsigner -sigalg SHA256withRSA -digestalg SHA1 -keystore $KEYSTORE -storepass $STOREPASS $APK $ALIAS 1>/dev/null 2>&1
#verify
#/usr/java/jdk1.8.0_131/bin/jarsigner -verify -verbose -certs $APK
#zipalign
/usr/android-sdk-linux/build-tools/23.0.2/zipalign -v 4 $APK $SIGNED_APK 1>/dev/null 2>&1
echo "ok"
exit 0