Windows下更新AOSP Framework&Service文件

每次修改完framework或者Service代码,需要重新上传二进制文件到手机并重启。因此编写脚本解决该问题。用法:
① 仅更新Framework文件

upa fwk

② 仅更新Service文件

upa svc

③ 同时更新Framework文件和Service文件

upa all

将以下文件保存为upa.bat并且放到C:\Windows\System32目录下,便可以在任意位置调用。
其中set android_out=Z:需要修改为本地机器中aosp out目录的位置。


@echo off

set android_out=Z:
set return=

rem 更改活动控制台代码页编码
chcp 65001>nul
color 3f

rem ===========================获取设备串号===========================
call :get-device-serial
set deviceId=%return%
if "%deviceId%"=="" (
    echo.手机ADB连接失败,请重试!
    goto :end
)

rem =============================ROOT设备=============================
call :check-root
set hasRoot=%return%
if "%hasRoot%"=="yes" (
    echo.设备ROOT成功!
) else (
    echo.设备ROOT失败!
    goto :end
)

rem ===========================重新挂载设备============================
call :check-remount
set hasRemount=%return%
if "%hasRemount%"=="yes" (
    echo.设备重新挂载成功!
) else (
    echo.设备重新挂载失败!
    goto :end
)

set argCount=0
for %%x in (%*) do (set /a argCount+=1)

set updateFwk=no
set updateSvc=no
if %argCount% equ 0 (
    set updateFwk=yes
    set updateSvc=yes
) else (
    for %%x in (%*) do (
        if "%%x" == "fwk" (
            set updateFwk=yes
        ) 
        if "%%x" == "svc" (
            set updateSvc=yes
        )
        if "%%x" == "all" (
            set updateFwk=yes
            set updateSvc=yes
        )
    )
)

rem ========================上传Framework文件=========================
if "%updateFwk%" == "yes" (
    echo.更新Framework文件...
    call :upload-framework
    echo.更新Framework文件完成!
)

rem ========================上传Services文件=========================
if "%updateSvc%" == "yes" (
    echo.更新Service文件...
    call :upload-service
    echo.更新Service文件完成
)

call :sync-and-start

goto :end

:get-device-serial
    rem 提取设备串号,若设备未连接,则提前退出
    set deviceId=
    for /f "tokens=1,2" %%i in ('adb devices') do (
        echo %%j | findstr "device" > nul && (
            if %errorlevel% equ 0 (
                echo.手机串号提取成功
                set deviceId=%%i
            )
        )
    )
    set return=%deviceId%
goto :end

:check-root
    rem 检测设备是否root
    set hasRoot=no
    for /f "tokens=*" %%i in ('adb root') do (
        echo %%i | findstr "running as root" > nul && (
            set hasRoot=yes
        ) 
    )
    set return=%hasRoot%
goto :end

:check-remount
    rem 检测设备根分区是否remount
    set hasRemount=no
    for /f "tokens=*" %%i in ('adb remount') do (
        echo %%i | findstr "remount succeeded" > nul && (
            set hasRemount=yes
        )
    )
    set return=%hasRemount%
goto :end

:upload-framework
    rem 上传Framework文件到手机设备
    set framework_dest=/system/framework
    call :upload-file %android_out% %framework_dest% framework.jar
    call :upload-file %android_out% %framework_dest% boot-framework.vdex

    set framework_arm_dest=/system/framework/arm
    call :upload-file %android_out% %framework_arm_dest% boot-framework.art
    @REM call :upload-file %android_out% %framework_arm_dest% boot-framework.art.rel
    call :upload-file %android_out% %framework_arm_dest% boot-framework.oat
    call :upload-file %android_out% %framework_arm_dest% boot.art
    @REM call :upload-file %android_out% %framework_arm_dest% boot.art.rel
    call :upload-file %android_out% %framework_arm_dest% boot.oat

    set framework_arm64_dest=/system/framework/arm64
    call :upload-file %android_out% %framework_arm64_dest% boot-framework.art
    call :upload-file %android_out% %framework_arm64_dest% boot-framework.art.rel
    call :upload-file %android_out% %framework_arm64_dest% boot-framework.oat
    call :upload-file %android_out% %framework_arm64_dest% boot.art
    @REM call :upload-file %android_out% %framework_arm64_dest% boot.art.rel
    call :upload-file %android_out% %framework_arm64_dest% boot.oat
goto :end

:upload-service
    rem 上传Service文件到手机设备
    set framework_dest=/system/framework
    call :upload-file %android_out% %framework_dest% services.jar
    @REM call :upload-file %android_out% %framework_dest% services.core.jar

    set framework_oat_arm64_dest=/system/framework/oat/arm64
    call :upload-file %android_out% %framework_oat_arm64_dest% services.art
    call :upload-file %android_out% %framework_oat_arm64_dest% services.vdex 
    call :upload-file %android_out% %framework_oat_arm64_dest% services.odex 
    @REM call :upload-file %android_out% %framework_oat_arm64_dest% services.core.vdex 
    @REM call :upload-file %android_out% %framework_oat_arm64_dest% services.core.odex

    @REM set framework_oat_arm_dest=/system/framework/oat/arm
    @REM call :upload-file %android_out% %framework_oat_arm_dest% services.core.vdex
    @REM call :upload-file %android_out% %framework_oat_arm_dest% services.core.odex
goto :end


:sync-and-start
adb shell sync
adb shell stop
adb shell start
goto :end

:upload-file
    set aospOutLoc=%1
    set fileDir=%2
    set fileName=%3
    set srcFile=%aospOutLoc%/%fileDir%/%fileName%
    set destFile=%fileDir%/%fileName%
    if exist %srcFile% (
        echo.拷贝文件%srcFile%到%destFile%
        for /f "tokens=*" %%i in ('adb push %srcFile% %destFile%') do (
            echo.输出结果:%%i
            echo %%i | findstr "file pushed" > nul && (
                echo -e "文件%srcFile%推送成功!"
            )
        )
    ) else (
        echo.源文件%srcFile%不存在,请确认!
    )
    echo.----------------------------------
goto :end


:end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值