Linux 安装AndroidSdk 并使用zipalign对齐工具完成apk的签名


一、下载AndroidSdk并安装

1.SDK tools下载地址:https://developer.android.google.cn/studio

打开上面的链接滑到最后,下载linux版本的SDK tools zip包

在这里插入图片描述

2.将下载的文件上传到Linux服务器并解压,可以看到cmdline-tools下的文件如下

在这里插入图片描述

3.在cmdline-tools文件夹下创建名字为 latest 的文件夹,并把除 latest 文件夹以外的文件,都放进latest文件夹内
4.打开命令行 并定位到bin目录下执行命令
[yiyu@servercenter script]$ cd /opt/AndroidSdk/cmdline-tools/latest/bin/
[yiyu@servercenter bin]$ ./sdkmanager --list
[yiyu@servercenter bin]$ ./sdkmanager --install "build-tools;31.0.0" //安装想要的工具
[yiyu@servercenter bin]$ ./sdkmanager --uninstall "platforms;android-26" //删除安装的工具

二、使用对齐工具

在shell脚本中使用

#!/bin/bash
#引入环境变量
export PATH=/opt/jdk8/bin:/opt/jdk8/jre/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

FILE_NAME=$1
APK_REMOTE_PATH=/data/file_storge/vmospro/version/zhushou

if [ "$FILE_NAME" == "" ]; then
   echo "file is empty."
   exit 1;
fi;
VERSION_CODE=`aapt dump badging $APK_REMOTE_PATH/$FILE_NAME | grep '^package:' | awk -F "'"  '{print $4}'` > /dev/null 2>/dev/null
if [ "" == "$VERSION_CODE" ]; then
     echo "VERSION_CODE IS NULL"
     exit 2;
fi;
#echo $VERSION_CODE

PACKAGE_VERSION=`aapt dump badging $APK_REMOTE_PATH/$FILE_NAME | grep '^package:' | awk -F "'"  '{print $6}'` > /dev/null 2>/dev/null
if [ "" == "$PACKAGE_VERSION" ]; then
     echo "PACKAGE_VERSION IS NULL"
     exit 2;
fi;
#echo $PACKAGE_VERSION

#aapt dump badging $SIGN_FILE > /data/file_storge/vmospro/version/zhushou/version.txt
#versionCode=$(/bin/cat /data/file_storge/vmospro/version/zhushou/version.txt |head -1 | cut -d "'" -f 4)

if [ ! -d "$APK_REMOTE_PATH/$VERSION_CODE" ];then
  mkdir $APK_REMOTE_PATH/$VERSION_CODE
sudo chmod +rxw $APK_REMOTE_PATH/$VERSION_CODE
fi;

#解包
apktool d $APK_REMOTE_PATH/$FILE_NAME -f -o $APK_REMOTE_PATH/temp/ > /dev/null 2>/dev/null
#echo “解包成功”
#修改文件
sed -i 's/<application /&android:debuggable="true" /' $APK_REMOTE_PATH/temp/AndroidManifest.xml
#echo “替换文件成功”
#正式包 - 打包
apktool b $APK_REMOTE_PATH/temp > /dev/null 2>/dev/null
sudo chmod +rxw $APK_REMOTE_PATH/temp

#正式包签名
jksFile=$APK_REMOTE_PATH/vmospro.jks
waitSignPath=$APK_REMOTE_PATH/temp/dist/zipalign_out.apk
alreadySignPath=$APK_REMOTE_PATH/$VERSION_CODE/zhushou-release.apk
#对齐
/opt/AndroidSdk/build-tools/31.0.0/zipalign -v 4 $APK_REMOTE_PATH/temp/dist/$FILE_NAME $waitSignPath > /dev/null 2>/dev/null

/opt/AndroidSdk/build-tools/31.0.0/apksigner sign --ks  $jksFile  --ks-key-alias vmospro --ks-pass pass:vmos2020 $waitSignPath
sudo cp $waitSignPath $alreadySignPath

#/usr/local/openjdk/11.0.1/bin/jarsigner -verbose -keystore $jksFile -storepass vmos2020 -signedjar $alreadySignPath $waitSignPath vmospro > /dev/null 2>/dev/null
#echo "jarsigner -verbose -keystore $jksFile -storepass vmos2020 -signedjar $alreadySignPath $waitSignPath vmospro"
#echo "签名成功 -release"


MD5SUM=`md5sum $alreadySignPath | awk -F " "  '{print $1}'` > /dev/null 2>/dev/null
if [ "" == "$MD5SUM" ]; then
     echo "md5sum fail"
     exit 2;
fi;
#echo $MD5SUM

PACKAGE_SIZE=`du -s $alreadySignPath | awk -F " "  '{print $1}'` > /dev/null 2>/dev/null
if [ "" == "$PACKAGE_SIZE" ]; then
     echo "PACKAGE_SIZE IS NULL"
     exit 2;
fi;
#echo $PACKAGE_SIZE

#配置文件替换debug模式
sed -i 's/android:debuggable="true"/android:debuggable="false" /' $APK_REMOTE_PATH/temp/AndroidManifest.xml
#测试包 - 打包
apktool b $APK_REMOTE_PATH/temp > /dev/null 2>/dev/null
#对齐
/opt/AndroidSdk/build-tools/31.0.0/zipalign -v 4 $APK_REMOTE_PATH/temp/dist/$FILE_NAME $waitSignPath > /dev/null 2>/dev/null
#测试包 - 签
alreadySignPath=$APK_REMOTE_PATH/$VERSION_CODE/zhushou-debug.apk
/opt/AndroidSdk/build-tools/31.0.0/apksigner sign --ks  $jksFile  --ks-key-alias vmospro --ks-pass pass:vmos2020 $waitSignPath
sudo cp $waitSignPath $alreadySignPath
#/usr/local/openjdk/11.0.1/bin/jarsigner -verbose -keystore $jksFile -storepass vmos2020 -signedjar $alreadySignPath $waitSignPath vmospro > /dev/null 2>/dev/null
#echo "签名完成 -debug"
#sudo rm -rf $APK_REMOTE_PATH/temp
#sudo rm -f $APK_REMOTE_PATH/$FILE_NAME

echo "$VERSION_CODE:$PACKAGE_VERSION:$MD5SUM:$PACKAGE_SIZE"



总结

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值