python脚本运行aapt解析apk文件获取信息

sancaiodm Adb命令与工具 2023-05-08 1078 0


将解析文件夹的下所有APK文件并保存各APP的版本至文件内,

使用:bash  jiexi.sh "apkA,apkB,apkB,apkD,"

#!/bin/bash

usage() {
    echo "Please input app name"
    exit 1
}

if [[ -z "$1" ]]; then
    usage
fi

echo "---------------start read apk version execution----------------------"
CODE_ROOT_PATH=`pwd`
cd ../../
PROJECT_ROOT_PATH=`pwd`
echo "CODE_ROOT_PATH= $CODE_ROOT_PATH"
#AAPT_TOOL_PATH=/usr/local/bin/aapt   //如果未设置AAPT的环境变量,则需要指定aapt文件的路径,可能SDK的版本高低差异问题,AAPT工具使用不了,可使用AAPT2
APK_FILE_PATH=$PROJECT_ROOT_PATH/apps/
apks=(${1//,/ })

function read_apk_version() { 
        echo "####App versioncode ##############" > $CODE_ROOT_PATH/version.mk
        echo "" >> $CODE_ROOT_PATH/version.mk

	for apk in ${apks[@]}
	do
		echo "apk file name = ${apk}"
		result=$(aapt2 dump badging ${APK_FILE_PATH}/${apk}/${apk}.apk |grep 'version'|awk -F"'" '{ print $4}')
		if  [ ${apk} == "apkA" ];then
		    echo "PRODUCT_PROPERTY_OVERRIDES += aaa=$result" >> $CODE_ROOT_PATH/version.mk
		elif [ ${apk} == "apkB" ];then
		    echo "PRODUCT_PROPERTY_OVERRIDES += bbb=$result" >> $CODE_ROOT_PATH/version.mk
                elif [ ${apk} == "apkC" ];then
		    echo "PRODUCT_PROPERTY_OVERRIDES += ccc=$result" >> $CODE_ROOT_PATH/version.mk
                elif [ ${apk} == "apkD" ];then
		    echo "PRODUCT_PROPERTY_OVERRIDES += ddd=$result" >> $CODE_ROOT_PATH/version.mk
		fi
	        
	done
        cd $CODE_ROOT_PATH
}

read_apk_version


评论