欢迎光临
专注前后端开发技术与经验分享

ubuntu服务器使用apksigner签名打包apk无法安装

问题困扰了我大半个月,最后通过查官方文档解决,记录一下处理思路;

业务需求是:在Ubuntu服务器上解压apk文件,修改安装包内图片和配置文件,然后打包签名生成新apk,下面是签名方法:

apksigner sign --ks 签名证书路径 --ks-key-alias 证书别名 --out 签名完成后安装包输出路径 --ks-pass pass:证书密码 --key-pass pass:key密码 需要签名的安装包路径

使用该方法签名后部分apk文件会出现下面这个问题:

出现概率很低,但有些安装包一直无法安装
谷歌百度一圈也没找到类似的问题
之后尝试使用mt管理器在手机上使用相同的证书进行签名发现正常安装没有问题
事情就开始变得诡异起来了,猜想是jdk或sdk版本问题,尝试了切java8和java11,也尝试了sdk26~34全都出现一模一样的问题

后面偶然安卓官方文档有提供一个工具: 原文地址

大概意思就是在签名之前需要使用zipalign对齐zip文件后再签名apk:

zipalign -p -f -v 4 原apk路径 对齐后输出的apk路径

果然对齐后再签名就解决了!


apksignerzipalign都在Android SDK安装目录内,可以直接使用,附上Ubuntu配置apk打包环境:

  1. 安装java11

    sudo apt-get install openjdk-11-jdk
  2. 安装sdkmanager官方教程

  3. 使用sdkmanager下载sdk包:

    ./sdkmanager --install "build-tools;33.0.0" --sdk_root=/www/sdk/

注意sdk对应的jdk版本:
file

赞(1) 打赏
未经允许不得转载:杰哥博客 » ubuntu服务器使用apksigner签名打包apk无法安装

觉得文章有用就打赏杰哥一杯可乐吧~

支付宝扫一扫打赏

微信扫一扫打赏