替换apk中的文件然后重新打包签名

1.首先创建一个文件夹repack,用来存放接下来需要实现的内容

2.这里以替换apk的assets目录中的文件为例进行说明:

(1)创建一个assets目录,将要替换的文件拷贝到该目录里,文件夹目录结构需要和原始apk中的目录结构一致;

(2)将签名文件放到data文件夹中;

(3)创建一个output目录用来存放替换完成后最终生成的apk

(4)下面就是最重要的一步了,写脚本,新建一个脚本文件repack.bat;

最终的文件结构如下图所示:

 

脚本文件如下:

@echo off
SET KEYSTORE_NAME=.\data\xxx.jks
SET KEYSTORE_ALIAS=xxx
SET KEYSTORE_STOREPASS=1234
SET KEYSTORE_KEYPASS=1234

SET ASSETS=.\assets

set UNSIGNED=.\output\unsinged_
SET SIGNED=.\output\repack_
set ZIP_ALGIN=.\output\zipalign_

FOR %%i IN (*.apk) DO (
@echo start %%i

if exist %UNSIGNED%%%i del /F /Q %UNSIGNED%%%i
if exist %SIGNED%%%i del /F /Q %SIGNED%%%i
if exist %ZIP_ALGIN%%%i del /F /Q %ZIP_ALGIN%%%i

copy %%i %UNSIGNED%%%i
@echo replace file...
@REM 以下命令只能替换或新增文件,不能删除apk中原有的文件
jar -uf %UNSIGNED%%%i %ASSETS%
@echo replace file Completed !
@echo zipalign...

@REM 对齐优化
zipalign 4 %UNSIGNED%%%i %ZIP_ALGIN%%%i
@echo zipalign completed !

@echo apksigner...
call apksigner sign --ks %KEYSTORE_NAME% --ks-key-alias %KEYSTORE_ALIAS% --ks-pass pass:%KEYSTORE_STOREPASS% --key-pass pass:%KEYSTORE_KEYPASS% --out %SIGNED%%%i %ZIP_ALGIN%%%i
@echo sign Completed !

del /F /Q %UNSIGNED%%%i
del /F /Q %ZIP_ALGIN%%%i

@echo All Completed !
@echo output: %SIGNED%%%i
)
@pause

2. 原始的apk文件放在repack目录中,支持多个apk批量替换
3. 将要替换的文件放到repack\assets目录中,如果是替换其他文件,则将文件放在相应的目录即可
3. 双击执行repack.bat,等待脚本正确执行完成
4. 脚本执行完成后,生成的apk文件输出到repack\output目录中

注意:
脚本中使用了jar打包和apksigner签名命令,需要配置好JDK和apksigner的环境变量
apksigner的位置在api>=25的SDK中,例如SDK\build-tools\29.0.2\apksigner.bat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值