替换APK中的文件重新打包

这两天遇到一个问题,一直没有头绪,为了确认原因,需要将新的资源和代码,替换到老包中,看看问题是否会出现,结果很无情,问题依旧。不过倒是研究了下如何替换assets中的文件。脚本基本都是网上搜集来的,发现这个方法有个bug,替换可以,无法删除,因此res会变大。用的时候要注意这点。

#签名相关信息 需要按需修改为自己的
SET KEYSTORE_NAME=xxxxxxxxxxxxxx.keystore
#app别称
SET KEYSTORE_ALIAS=xxxxxxxxxxxxxx
#签名密码
SET KEYSTORE_STOREPASS=xxxxxxxxxxxxxx
#签名密码
SET KEYSTORE_KEYPASS=xxxxxxxxxxxxxx

#原apk名字
SET INPUT_APK=.\input.apk
#新建META-INF和assets两个目录 其中META-INF新建几个和apk中名字一样的文件 但是大小为0 可以用touch命令
SET META-INF=.\META-INF
#assets保存着需要被替换的文件
SET ASSETS=.\assets

#新建output目录
SET UNSIGNED=.\output\Unsinged.apk
SET SIGNED=.\output\Signed.apk
SET OPT=.\output\output.apk
 
copy %INPUT_APK% %UNSIGNED%
 
jar -uf %UNSIGNED% %META-INF%
jar -uf %UNSIGNED% %ASSETS%
@echo 替换文件完成!
 
jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore %KEYSTORE_NAME% -storepass %KEYSTORE_STOREPASS% -keypass %KEYSTORE_KEYPASS% -signedjar %SIGNED% %UNSIGNED% %KEYSTORE_ALIAS%
@echo 签名完成!
 
del /F /Q %OPT%
#zipalign在android 的SDK中,可以添加环境变量或者直接拷贝到当前目录
.\zipalign  4 %SIGNED% %OPT%
@echo 优化完成!
 
del /F /Q %UNSIGNED%
del /F /Q %SIGNED%
@echo 操作完成!
 
@pause

猜你喜欢

转载自blog.csdn.net/ch_majia/article/details/83149402