项目需要:需要对某个包分包,对渠道和下面的包做标记,但又不改变原包的签名,想到在原apk中插入某个带渠道号和包号的文件,服务器Linux环境,采用7zip 压缩格式解压,打包,插入文件到apk解压后的META-INF文件中
批量打包代码如下:
注意:传入的参数路径要先存在,Linux先安装7z 工具
#!/bin/bash
#参数:
# 1.原游戏包文件
# 2.游戏ID
# 3.渠道号
# 4.渠道开始打包的包号
# 5.打包个数
# 6.临时文件地址
# 7.存放分包的地址
source_apk_file="$1"
game_id="$2"
promote_id="$3"
subpkg_number="$4"
count="$5"
tmp_path="$6"
target_apk_path="$7"
pre_file_name="okwan"
if [ ! -d ${tmp_path} ];then
mkdir -p ${tmp_path}
fi
if [ ! -d ${target_apk_path} ];then
mkdir -p ${target_apk_path}
fi
tmp_apk_name="${tmp_path}game.apk"
#chmod 0777 $tmp_apk_name
#exit
#test rm -rf /data1/mgame/Resource/Subpackages/*
#test rm -rf /data1/mgame/Resource/SubpackageUnzip/*
#exit
for i in `seq $game_startapk_id $count`
do
cp -a $source_apk_file $tmp_apk_name
mkdir -p -m 777 "${tmp_path}META-INF/"
touch ${tmp_path}META-INF/${pre_file_name}_${promote_id}_${i}
cd ${tmp_path}
7za a game.apk META-INF/${pre_file_name}_${promote_id}_${i}
target_apk_file="${target_apk_path}${pre_file_name}_${game_id}_${promote_id}_${i}.apk"
mv game.apk ${target_apk_file}
if [ -f ${target_apk_file} ];then
echo "{\"success\":1,\"file\":\"${target_apk_file}\",\"number\":${i}}"
fi
rm -rf "${tmp_path}*"
done
cd /
rm -rf ${tmp_path}