文章目录
- [1. adb connect wifi](#1. adb connect wifi)
- [2. 抓设备系统日志](#2. 抓设备系统日志)
- [3. 关于内存分析](#3. 关于内存分析)
- [4. 蓝牙协议栈更新](#4. 蓝牙协议栈更新)
本文总结了在车载车机开发中常用的adb 脚本,为了平时方便使用,整理成了bat 脚本,方便提高开发效率,记录于此,供你参考。
1. adb connect wifi
java
@echo off
echo wait-for-device
adb wait-for-device
@echo off
setlocal enabledelayedexpansion
rem 执行 adb shell ifconfig 命令并将结果保存到临时文件
adb shell ifconfig > ifconfig_output.txt
rem 初始化变量用于存储 IP 地址
set "ip_address="
set "found_driver=false"
rem 遍历临时文件的每一行
for /f "tokens=*" %%a in (ifconfig_output.txt) do (
set "line=%%a"
if "!found_driver!"=="false" (
echo !line! | findstr /i "Driver aicwf_sdio" >nul
if !errorlevel! equ 0 (
set "found_driver=true"
)
) else (
echo !line! | findstr /i "inet addr:" >nul
if !errorlevel! equ 0 (
for /f "tokens=2 delims=:" %%b in ("!line!") do (
for /f "tokens=1" %%c in ("%%b") do (
set "ip_address=%%c"
goto connect
)
)
)
)
)
:connect
if defined ip_address (
echo 找到 IP 地址: %ip_address%
adb connect %ip_address%:5555
) else (
echo 未找到有效的 IP 地址。
)
rem 删除临时文件
del ifconfig_output.txt
pause
copy 代码到 txt中,命名为 连接wif.bat 双击即可生效
- 常用的menu菜单

java
@echo off
echo wait-for-device
adb wait-for-device
:menu
cls
echo 请选择操作:
echo 1. 无线连接设备(172.20.210.89)
echo 2. 输入文本
echo 3. 连接 Wi-Fi
echo 4. 输入 Soc 密码(jinkens8888888)
echo 5. 检查设备连接情况
echo 6. 截图
echo 7. log
echo 8. kill 蓝牙音乐
echo 9. 退出
echo 10.kill launcher
set /p choice=请输入选项(1 - 10):
if "%choice%"=="1" (
call :connect_device
) else if "%choice%"=="2" (
call :input_text
) else if "%choice%"=="3" (
call :connect_wifi
) else if "%choice%"=="4" (
call :input_soc_password
) else if "%choice%"=="5" (
call :check_device_connection
) else if "%choice%"=="6" (
call :take_screenshot
) else if "%choice%"=="7" (
call :get_log
) else if "%choice%"=="8" (
call :kill_music
) else if "%choice%"=="9" (
exit /b
) else if "%choice%"=="10" (
call :kill_launcher
) else (
echo 无效的选项,请重新输入。
pause
goto menu
)
goto menu
:connect_device
echo 正在尝试无线连接设备 172.20.210.89...
adb connect 172.20.210.89
if %errorlevel% equ 0 (
echo 成功无线连接到 172.20.210.89。
) else (
echo 无线连接到 172.20.210.89 失败。
)
pause
exit /b
:input_text
adb devices | findstr /i "device" | find /v "devices" >nul
if %errorlevel% equ 0 (
setlocal enabledelayedexpansion
set /p input_text=请输入要输入的文本:
set "escaped_text=!input_text: =%%20!"
adb shell input text "!escaped_text!"
if %errorlevel% equ 0 (
echo 文本输入成功。
) else (
echo 文本输入失败。
)
endlocal
) else (
echo 未检测到连接的设备,请先连接设备。
)
pause
exit /b
:connect_wifi
adb devices | findstr /i "device" | find /v "devices" >nul
if %errorlevel% equ 0 (
setlocal enabledelayedexpansion
set wifi_password=jinhu888888
set "escaped_wifi_password=!wifi_password: =%%20!"
adb shell input text "!escaped_wifi_password!"
if %errorlevel% equ 0 (
echo 已尝试输入 Wi-Fi 密码(jinkins888888)。
) else (
echo 输入 Wi-Fi 密码失败。
)
endlocal
) else (
echo 未检测到连接的设备,请先连接设备。
)
pause
exit /b
:input_soc_password
adb devices | findstr /i "device" | find /v "devices" >nul
if %errorlevel% equ 0 (
setlocal enabledelayedexpansion
set soc_password=jinhu8888888
set "escaped_soc_password=!soc_password: =%%20!"
adb shell input text "!escaped_soc_password!"
if %errorlevel% equ 0 (
echo 已尝试输入 Soc 密码(jinhu8888888)。
) else (
echo 输入 Soc 密码失败。
)
endlocal
) else (
echo 未检测到连接的设备,请先连接设备。
)
pause
exit /b
:check_device_connection
echo 正在检查设备连接情况...
adb devices
pause
exit /b
:take_screenshot
@echo off
chcp 936 >nul
rem 获取当前时间,格式为 年-月-日_时-分-秒
setlocal enabledelayedexpansion
set "year=%date:~0,4%"
set "month=%date:~5,2%"
set "day=%date:~8,2%"
set "hour=%time:~0,2%"
if "!hour:~0,1!"==" " set "hour=0!hour:~1,1!"
set "minute=%time:~3,2%"
set "second=%time:~6,2%"
set "timestamp=%year%-%month%-%day%_%hour%-%minute%-%second%"
rem 定义设备上的临时截图文件路径
set "device_screenshot_path=/sdcard/screenshot.png"
rem 执行截图命令
adb shell screencap -p %device_screenshot_path%
rem 定义本地保存的截图文件名
set "local_screenshot_path=%timestamp%.png"
rem 将截图文件从设备拉取到本地
adb pull %device_screenshot_path% %local_screenshot_path%
rem 删除设备上的临时截图文件
adb shell rm %device_screenshot_path%
echo 截图已保存到 %local_screenshot_path%
pause
exit /b
:kill_music
echo 正在 kill 蓝牙音乐
adb shell am force-stop com.bihu.bhmusic
pause
exit /b
:kill_launcher
echo 正在 kill launcher
adb shell am force-stop com.android.car.carlauncher
pause
exit /b
:get_log
@echo off
rem 获取当前时间,格式为 年-月-日_时-分-秒
setlocal enabledelayedexpansion
set "year=%date:~0,4%"
set "month=%date:~5,2%"
set "day=%date:~8,2%"
set "hour=%time:~0,2%"
if "!hour:~0,1!"==" " set "hour=0!hour:~1,1!"
set "minute=%time:~3,2%"
set "second=%time:~6,2%"
set "timestamp=%year%-%month%-%day%_%hour%-%minute%-%second%"
rem 定义日志文件名
set "log_file_name=%timestamp%.txt"
echo 日志正在抓取到当前目录,关闭此窗口将结束日志抓取...
rem 执行adb logcat命令并将日志持续输出到本地文件
adb logcat > %log_file_name%
pause
exit /b
2. 抓设备系统日志
- 先抓日志
java
@echo off
adb root
adb remount
adb pull data/system/dropbox/ dropbox\
adb pull data/anr/ anr\
adb pull data/tombstones tombstones\
adb pull data/misc/logd logd\
pause
- 再删除日志
java
@echo off
adb root
adb remount
adb shell rm -rf data/system/dropbox/*
adb shell rm -rf data/anr/*
adb shell rm -rf data/tombstones/*
adb shell rm -rf data/misc/logd/*
pause
3. 关于内存分析
java
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
echo.
echo [INFO] 正在检查设备连接...
adb wait-for-device
echo [SUCCESS] 设备已连接.
echo.
echo [STEP 1] 正在分析系统总内存情况, 并输出到 system_mem.txt...
adb shell dumpsys meminfo > system_mem.txt
echo [SUCCESS] 系统内存分析完成.
echo.
echo [STEP 2] 正在查找 pkg_list.txt 文件...
if not exist "pkg_list.txt" (
echo [ERROR] 在当前目录下未找到 pkg_list.txt 文件.
echo [ERROR] 请创建该文件, 每行写入一个需要分析的包名.
pause
exit /b
)
echo [SUCCESS] 找到 pkg_list.txt 文件.
echo.
echo [INFO] 开始逐个分析和处理应用...
echo =================================================
for /f "tokens=*" %%P in (pkg_list.txt) do (
set "pkg_name=%%P"
echo.
echo [INFO] 正在处理包名: !pkg_name!
echo [--> STEP 3] 正在分析 !pkg_name! 的内存, 输出到 !pkg_name!.txt
adb shell dumpsys meminfo !pkg_name! > !pkg_name!.txt
echo [SUCCESS] !pkg_name! 内存分析完成.
set "remote_heap_path=/data/local/tmp/!pkg_name!.hprof"
set "local_heap_file=!pkg_name!.hprof"
echo [--> STEP 4] 正在为 !pkg_name! 生成 heap dump 文件...
adb shell am dumpheap !pkg_name! !remote_heap_path!
echo [--> STEP 4] 正在将 heap 文件从设备拉取到电脑: !local_heap_file!
adb pull !remote_heap_path! !local_heap_file!
echo [--> STEP 4] 正在清理设备上的临时 heap 文件...
adb shell rm !remote_heap_path!
echo [SUCCESS] !pkg_name! 的 heap 文件已成功导出.
echo -------------------------------------------------
)
echo.
echo =================================================
echo [COMPLETE] 所有任务已完成.
echo.
pause
同时注意
- pkg_list.txt中的文本:
com.android.car
4. 蓝牙协议栈更新
java
:: 不要放在中文路径!!!
adb root
adb remount
adb shell su root mount -o rw,remount /system
::删除飞易通协议栈
adb shell su root rm /system/bin/blueware
::push 飞易通协议栈
adb push system /
::修改可执行文件权限
adb shell su root chmod 755 /system/bin/blueware
adb shell su root sync
@pause
