今日客户对安卓apk进行代码扫描时发现漏洞,后经过研究解决办法为安卓V2签名。
解决办法:Jenkins只能用命令行去设置签名。
步骤1:ZipAlign
zip对齐,因为APK包的本质是一个zip压缩文档,经过边界对齐方式优化能使包内未压缩的数据有序的排列,从而减少应用程序运行时的内存消耗 ,通过空间换时间的方式提高执行效率(zipalign后的apk包体积增大了100KB左右)。
打开cmd,把目录切换到SDK的build-tools目录下(例如E:\SDK\build-tools\25.0.2\
),执行: zipalign -v 4 in.apk out.apk //执行4字节对齐优化操作 zipalign -c -v 4 in.apk //检查当前APK是否已经执行过Align优化
步骤2:
apksigner是一款在Android build tools 24.0.3及以上版本中提供的对apk文件签名以及验证签名信息的工具,它与jarsigner的作用类似,但比后者功能更加强大。注意在使用apksigner前,请先对APK执行zipalign,而不能在之后执行zipalign操作,这一点与jarsigner不同。
apksigner sign --ks demo.jks --out out.apk in.apk
示例:
#!/bin/bash
cd /Users/jenkins/jenkins/tool/android-sdk-macosx/build-tools/26.0.2./zipalign -v 4 ${WORKSPACE}/version/${JOB_NAME}_${BUILD_NUMBER}_${SVN_REVISION_2}.apk ${WORKSPACE}/version/${JOB_NAME}_${BUILD_NUMBER}_${SVN_REVISION_2}_V2.apk./apksigner sign --ks /Users/jenkins/Documents/Android_keystore/essencefund.keystore --ks-pass pass:essencefund ${WORKSPACE}/version/${JOB_NAME}_${BUILD_NUMBER}_${SVN_REVISION_2}_V2.apk
./apksigner verify -v ${WORKSPACE}/version/${JOB_NAME}_${BUILD_NUMBER}_${SVN_REVISION_2}_V2.apk
cd -
原文出处:
https://blog.csdn.net/lamelias/article/details/53669417
https://www.jianshu.com/p/e1e2fd05bb62
https://www.jb51.net/article/141954.htm