Android rom解包打包工具

2019-12-10 19:18:01王振洲

三.批处理脚本实现快速定制rom包

也许做过rom的都知道:

1.对于4.4系统的手机,如果要打入apk到system区,只需将apk复制到system/app下,对应apk的lib文件(.so文件)复制到system/lib下即可;如果要打入apk到userdata区,只需将apk复制到userdata/app下即可。

2.对于5.0及以上系统的手机,如果要打入apk到system区,需要将apk及对应的lib文件建在同一目录下,然后复制到system/app下(具体查看system/app下其他apk的目录格式),并且,在实践中,有的手机需要打入到system/framework中apk才能正常运行,不然闪退;如果需要打入apk到userdata区,同样只需将apk复制到userdata/app下即可。

几点说明:

1.由于需要解压出apk下的lib文件,而且,用winrar带的rar和unrar并不支持apk格式,所以用了好压的解压功能。将好压的安装目录配置到系统的path环境即可。这样就可以在命令行调用HaozipC命令,在安装目录下也有命令行的说明文档,具体可自行安装查看。

2.由于有的手机需要打入system/framework中apk才能正常启动,因此在批处理时加入手动选择是否打入。

3.对于系统分区限制大小,可以先df出,存入txt列表中,让脚本自动读取。如:

Android rom解包打包工具

4.实践中,5.0及以上系统,打入system区的apk可能不能包含中文名字。避免频繁更改,同样可以建一个txt文件,让脚本自动更改。如:

Android rom解包打包工具

5.对于5.0及以上系统请先pull file_contexts文件到当前目录。

批处理脚本如下:makeRom.zip(下载)

@echo off
title 定制rom包 by 小猴子jerry
echo -------------------------------------------------------------------------
echo 注意:请务必输入正确的安卓系统和底包编号,否则做包无效
echo 安卓系统(4.4/5.0)、底包编号(01等)
echo 安卓系统5.0及以上请输入5.0
echo -------------------------------------------------------------------------
pause
set /p version=请输入安卓系统版本号(4.4/5.0):
set /p var=请输入底包编号:
if exist .sysApk set /p is_framework=是否需要打入apk到framework中(y/n):
echo ----------------请仔细核对,若输入有误请关闭程序重新输入-----------------
pause
if %version%==4.4 (
%打包system%
if exist .system (
echo system.img正在制作中...
if exist .sysApk (
echo 正在解压需要的.so文件...
for /f "delims=" %%a in ('dir /b/a-d/oN .sysApk*.*') do (
HaoZipC x .sysApk%%a -o.syslib libarmeabi*.* -y -sn)
copy sysApk*.* systemapp
move sysliblibarmeabi*.* systemlib
rd/s/q syslib)
for /f "skip=1 tokens=1,2,3" %%i in (limit.txt) do ( 
if %%i==%var% make_ext4fs -s -l %%j -a system ./system.img ./system
)
echo system.img制作完成)
%打包userdata%
if exist .userdata (
echo userdata.img正在制作中...
if exist .userApk (
if not exist userdataapp ( md userdataapp )
copy userApk*.* userdataapp)
for /f "skip=1 tokens=1,2,3" %%i in (limit.txt) do ( 
if %%i==%var% make_ext4fs -s -l %%k -a data ./userdata.img ./userdata
)
echo userdata.img制作完成)
if not exist .system (
if not exist .userdata (
echo 找不到system or userdata文件夹,请拷贝system或userdata到当前目录))
%处理update文件%
if not exist .update.rom (
echo 找不到update文件,请拷贝update.rom到当前目录)
if exist .update.rom (
ren update.rom update.zip
HaoZipC d -tzip update.zip -ri!imagessystem imagesuserdata -sn
if not exist .images ( md .images )
if exist .system.img ( move system.img .images)
if exist .userdata.img ( move userdata.img .images)
HaoZipC a -tzip update.zip .images -sn)
ren update.zip update.rom
rd/s/q system
rd/s/q userdata
rd/s/q images
echo 定制rom包制作完成!!)
rem =========================================================================================================================
if %version%==5.0 (
%前提:从手机中pull出需要的file_contexts文件%
%打包system%
if exist .system (
echo system.img正在制作中...
if exist .sysApk (
echo 正在解压需要的.so文件...
for /f "tokens=1,2 delims=." %%a in ('dir /b/a-d/oN .sysApk*.*') do (
if %%a==usbhelp ( ren .sysApkusbhelp.apk com.service.usbhelper.apk
md .syslibcom.service.usbhelper
move .sysApkcom.service.usbhelper.apk .syslibcom.service.usbhelper)
for /f "tokens=1,2 delims=:" %%i in (AppList.txt) do ( 
if %%a==%%i ( ren .sysApk%%a.apk %%j.apk
HaoZipC x .sysApk%%j.apk -o.syslib%%j libarmeabi*.* -y -sn
ren .syslib%%jlibarmeabi arm
move sysApk%%j.apk syslib%%j)))
if %is_framework%==y ( xcopy/s/y syslib systemframework) else (
xcopy/s/y syslib systemapp)
rd/s/q syslib)
for /f "skip=1 tokens=1,2,3" %%i in (limit.txt) do ( 
if %%i==%var% make_ext4fs -S file_contexts -s -l %%j -a system ./system.img ./system)
echo system.img制作完成)
%打包userdata%
if exist .userdata (
echo userdata.img正在制作中...
if exist .userApk (
if not exist userdataapp ( md userdataapp )
move userApk*.* userdataapp)
for /f "skip=1 tokens=1,2,3" %%i in (limit.txt) do ( 
if %%i==%var% make_ext4fs -S file_contexts -s -l %%k -a data ./userdata.img ./userdata)
echo userdata.img制作完成)
del file_contexts
if not exist .system (
if not exist .userdata (
echo 找不到system or userdata文件夹,请拷贝system或userdata到当前目录))
%处理update文件%
HaoZipC d -tzip update.zip -ri!imagessystem imagesuserdata -sn
if not exist .images ( md .images )
if exist .system.img ( move system.img .images)
if exist .userdata.img ( move userdata.img .images)
HaoZipC a -tzip update.zip .images -sn
ren update.zip update.rom
rd/s/q system
rd/s/q userdata
rd/s/q images
rd/s/q sysApk
rd/s/q userApk
echo 定制rom包制作完成!!)
pause