赞
踩
本文首发地址 https://h89.cn/archives/180.html
最新更新地址 https://gitee.com/chenjim/chenjimblog
logcat 并用tee重定向输出到文件log.txt
adb logcat |tee log.txt
logcat过滤关键字abc的日志
adb logcat |grep abc
grep在windows依赖C:\Program Files\Git\usr\bin\grep.exe
adb shell "logcat | grep abc"
使用android
系统的grep
命令
先adb shell
,然后 logcat |grep -iE "abc|def"
过滤包含 abc 或者包含 def 的内容,-i 表示忽略大小写
先adb shell
,然后 logcat |grep abc | grep def"
过滤包含 abc 且包含 def 的内容
更多grep
相关使用,可参考 https://www.runoob.com/linux/linux-comm-grep.html
logcat 只抓去ERROR的日志,更多使用可以参考 android logcat
adb logcat *:E
截屏
adb exec-out screencap -p > screen.png
录屏
adb shell screenrecord /sdcard/example.mp4
adb pull /sdcard/example.mp4
当前acitivity信息
adb shell dumpsys activity | grep mResumedActivity
adb shell dumpsys activity | grep ActivityRecord
可以查看相关包名、Activity堆栈
应用的内存信息
adb shell dumpsys meminfo 包名
系统安装所有应用包名及位置
adb shell "pm list packages -f "
adb shell "pm list packages -f |grep saic"
关键字过滤
获取某个应用的版本号
adb shell dumpsys package com.baidu.BaiduMap | grep version
结束进程
adb shell am force-stop com.chenjim.package
结束指定包名的应用
adb shell pkill chenjim*
结束包名含有chenjim
所有正在运行的应用
启动安卓原生Launcher3桌面应用
adb shell am start -n com.android.launcher3/.Launcher
启动安卓原生设置应用
adb shell am start -n "com.android.settings/.Settings"
启动安卓原生拨号应用
adb shell "am start -n com.android.dialer/.DialtactsActivity"
启动MTK工程模式 (##3646633## )
adb shell am start -n com.mediatek.engineermode/.EngineerMode
启动MTK日志应用mtklog ( *1973461# )
adb shell am start -n com.mediatek.mtklogger/.MainActivity
启动高通日志应用 ( *1973461# )
adb shell am start -n com.hmct.ftmode/.FTModeMain
发广播恢复出厂设置,不是所有设备都有效,其流程参考 链接
adb shell am broadcast -a android.intent.action.MASTER_CLEAR
发带参数广播如下,更多介绍参考 链接
adb shell am broadcast -a com.android.test --es test_string "this is test string" --ei test_int 100 --ez test_boolean true
启动服务Service
adb shell am startservice -n com.chenjim.pkg/.YourService
查看某服务是否正在运行
adb shell "dumpsys activity services | grep YourServiceName"
发送模拟按键事件
adb shell input keyevent 21
21
表示 KEYCODE_DPAD_LEFT
,更多参考 KeyEvent
adb 触发应用 gc
adb shell kill -10 23683
后面数值是进程 PID
pid=$(adb shell ps | grep "com.android.camera" | awk '{print $2}') && adb shell kill -10 $pid
也可以直接执行此命令
方法一:打开手机的开发者模式,开启 开发者选项,开启无线调试,如下图所示
连接 adb connect 192.168.31.96:42005
,断开连接 adb disconnect 192.168.31.96:42005
方法二:使用一些老旧设备,需要完全root权限,一般手机系统不行
adb root
(都可以USB线连接了,无线连接只能备用吧)su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
ip neigh
adb connect 192.168.59.132
参考自:https://juejin.cn/post/6844903496861351943
tar cjf - logs/ |split -b 1m - logs.tar.bz2.
logs.tar.bz2.aa, logs.tar.bz2.ab, logs.tar.bz2.ac
cat logs.tar.bz2.a* | tar xj
tar czf hello.tar.gz hello
tar xvzf hello.tar.gz -C out.dir
原文http://blog.csdn.net/xyang81/article/details/42319789
方式1:使用arm-linux-androideabi-addr2line 定位出错位置
以arm架构的CPU为例,执行如下命令:
android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-addr2line -e hello-jni/obj/local/armeabi-v7a/libhello-jni.so 00000cf4 00000d1c
-e:指定so文件路径
0000cf4 0000d1c:出错的汇编指令地址
方式2:使用arm-linux-androideabi-objdump 定位出错的函数信息
android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-objdump -S -D hello-jni/obj/local/armeabi-v7a/libhello-jni.so > dump.log
通过这种方式,也可以查出这两个出错的指针地址分别位于哪个函数中。
方式3:ndk-stack 以armv7架构为例,执行如下命令:
adb logcat | ndk-stack -sym hello-jni/obj/local/armeabi-v7a
测试人员发现crash,用adb logcat保存日志文件,然后发给程序员通过ndk-stack命令分析
adb logcat > crash.log
NDK_DIR/ndk-stack -sym hello-jni/obj/local/armeabi-v7a -dump crash.log
ota=./build/tools/releasetools/ota_from_target_files
$ota -i v2_old.zip v3_new.zip v2_3_ota.zip
//v2_old.zip和v3_new.zip是*_target_files.zip 在以下目录
./out/target/product/项目名称/obj/PACKAGING/target_files_intermediates
//加签名的ota包
SFile=./device/mediatek/build/releasetools/mt_ota_from_target_files.py
KFile=./device/mediatek/common/security/vanzo/releasekey
$ota -s $SFile --block -k $KFile -i v2_old.zip v3_new.zip v2_3_ota.zip
在build/core/dex_preopt_odex_install.mk
中添加
ifeq ($(LOCAL_MODULE),Gallery2)
LOCAL_DEX_PREOPT:=
endif
编个系统Rom版本,下载到手机。
或者在Android.mk 中添加
LOCAL_DEX_PREOPT := false
然后mmm 图库模块,adb push编译好的apk,重启设备
输入如下命令,ipo关机后,adb仍然可以处于工作的状态。
adb shell setprop ipod_debug 1
: 注释:bat文件默认字符集为ANSI,否则有乱码
@echo off
set times=5
set gap=3
echo 最多执行%times%次,每次间隔%gap%秒
for /l %%i in (1,1,%times%) do (
choice /t %gap% /d y /n >nul
adb shell input keyevent 21
echo 按键 KeyEvent.KEYCODE_DPAD_LEFT,当前第%%i%次
)
pause
用vendor/mediatek/proprietary/scripts/dct/DrvGen.exe
打开kernel-*.*/drivers/misc/mediatek/dws/mt6739/项目名称.dws
在源码 build/envsetup.sh
中有相关命令
需要执行source build/envsetup.sh
将这些命令加到环境中
这些命令详细封装如下
function ggrep() { find . -name .repo -prune -o -name .git -prune -o -name out -prune -o -type f -name "*\.gradle" \ -exec grep --color -n "$@" {} + } function jgrep() { find . -name .repo -prune -o -name .git -prune -o -name out -prune -o -type f -name "*\.java" \ -exec grep --color -n "$@" {} + } function cgrep() { find . -name .repo -prune -o -name .git -prune -o -name out -prune -o -type f \( -name '*.c' -o -name '*.cc' -o -name '*.cpp' -o -name '*.h' -o -name '*.hpp' \) \ -exec grep --color -n "$@" {} + } function resgrep() { for dir in `find . -name .repo -prune -o -name .git -prune -o -name out -prune -o -name res -type d`; do find $dir -type f -name '*\.xml' -exec grep --color -n "$@" {} + done } function mangrep() { find . -name .repo -prune -o -name .git -prune -o -path ./out -prune -o -type f -name 'AndroidManifest.xml' \ -exec grep --color -n "$@" {} + } function mgrep() { find . -name .repo -prune -o -name .git -prune -o -path ./out -prune -o \( -regextype posix-egrep -iregex '(.*\/Makefile|.*\/Makefile\..*|.*\.make|.*\.mak|.*\.mk|.*\.bp)' -o -regextype posix-extended -regex '(.*/)?(build|soong)/.*[^/]*\.go' \) -type f \ -exec grep --color -n "$@" {} + }
相关连接
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。