Logcat 查看日志可选参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 可选的参数主要有: 1、all:查看所有缓冲区日志 2、default:查看 main、system、crash 三个类型日志信息 3、main:查看 main 类型日志 4、radio:查看 radio 类型日志 5、events:查看 events 类型日志 6、system:查看 system 类型日志 7、crash:查看 crash 类型日志 查看系统运行日志: adb shell logcat //开始抓取或者-s logcat -c//清空日志 logcat -s tag//开始抓取日志 并筛选指定的tag日志 使用示例: logcat -b main #查看 main 类型日志 logcat -b main,system #用来查看 main 和 system 类型日志 logcat -b all #查看所有日志
aosp中查看c++版本
1 2 3 4 5 6 7 8 9 10 //文件路径:build/soong/cc/config/global.go //文件路径:build/soong/cc/config/clang.go CStdVersion = "gnu99" //编译 C 语言代码的标准,c99:表示使用 C99 标准进行编译,gnu99:表示与 GNU 编译器兼容的 C99 标准(GNU C99) CppStdVersion = "gnu++17" //编译C++ 标准的版本设置为 GNU C++ 17,C++ 标准版本设置为 C++17,其中的 gnu 表示与 GNU 编译器兼容的意思 ExperimentalCStdVersion = "gnu11" //表示启用了实验性的 C 语言标准版本,并将其设置为 GNU C11 ExperimentalCppStdVersion = "gnu++2a" //启用了实验性的 C++ 标准版本,并将其设置为 GNU C++2a
java代码跳转natice查找方式
搜索/查找文件
1 2 3 4 5 cd到framework/system或其他目录,以getevent文件为例 find -name getevent* 或者 ls -l | grep getevent grep getevent ./ -rn
查看所有进程的pid
1 2 ps -A (查看指定进程的pid:ps -A | grep " packageName") //生死指定进程:kill pid
adb执行截屏或其他手势
1 adb shell input keyevent 120 调用截屏命令
打印日志调试(这种方法只能查找java层,无法查找到native调用java层的方法,native调用java使用grep搜索)
1 2 3 4 5 //查找某个地方从底层调用了哪些,加入下面代码,这种方式不会引起程序崩溃,可以获取到堆栈的调用顺序; // 低版本,具体多少没做验证,如果打印不出来,用下面的方式 Log.i("tyl","oncreate:",new Exception()); // 高版本,通过异常直接打印堆栈 new Exception().printStackTrace();
native端打印堆栈
1 2 3 4 5 6 7 8 9 10 11 12 13 14 C++ 中使用android::CallStack将所在线程的调用堆栈打印出来 基本用法: 1. 进入对应的cpp文件中,放开 #define LOG_NDEBUG 0 注释,且变成#define LOG_NDEBUG 1 2. 声明头文件 #include <utils/CallStack.h> #include <utils/Log.h> 3. 调用方法 android::CallStack stack; stack.update(); stack.log(debug); // 输出到logcat 4. mk或者bp文件中需要链接以下so库 libutils libcutils
查看当前view对应的具体的是谁
1 2 3 4 5 //加上 | grep ResumedActivity 是筛选出当前最top的Activity adb shell dumpsys activity activities | grep ResumedActivity //结果: 当前包名com.example.test/.MainActivity mResumedActivity: ActivityRecord{6eb3073 u0 com.example.test/.MainActivity t5} ResumedActivity: ActivityRecord{6eb3073 u0 com.example.test/.MainActivity t5}
查找系统应用(launcher2)在哪些地方编译的
1 2 3 4 5 6 //cd到~/android-8.1.0_r1/build目录,grep "Launcher2" ./ -rn查找在哪里有用到,注意大小写 tyl@ubuntu:~/android-8.1.0_r1/build$ grep "Launcher2" ./ -rn ./make/target/product/core.mk:45: Launcher2 \ 如果查出有多个文件,则都需要打开对应路径添加应用名 //vim打开显示 vi ./make/target/product/core.mk //打开后如下图,说明PRODUCT_PACKAGES 在这个里面也需要添加内置应用的文件夹名
input dumpsys,打印触摸事件日志到本地文件
1 2 # 给触摸事件保存到一个txt中 adb shell dumpsys input > input.txt (input.txt本地文件名)
adb shell am stack list查看设备上当前运行的应用程序和任务的信息以及点击坐标,它们之间的关系和顺序等;
AOSP常用编译和查找命令
command
describe
m
等同于 make ,进行一次完整编译。
mm
在当前目录下编译所有模块,但不包括依赖项。
mmm [目录]
编译指定目录下的所有模块,但不包括依赖项。只编译指定模块:mmm [dir/:target1,target2]
mma
在当前目录下编译所有模块,包括依赖项。
mmma [目录]
编译指定目录下的所有模块,包括依赖项。
make clean
删除整个 out/ 目录。
make clobber
用于清除编译缓存。
make snod
当重新编译部分模块完成后,快速生成img文件。
cgrep
对C/C++文件执行 grep (只搜寻C/C++文件类型,也包括.h类型)。
jgrep
只对Java文件执行 grep (只搜寻Java文件类型)。
resgrep
只匹配 /res 目录下的 xml 文件。
sepgrep
只查找sepolicy文件。
adb shell dumpsys命令
1 2 3 4 5 6 7 8 9 命令用于获取Android设备上正在运行的系统服务信息。通过该命令,可以获取到各种设备状态、应用程序信息以及系统服务信息。 以下是一些常见的用法: adb shell dumpsys:列出所有可用的服务名称。 adb shell dumpsys <service>:打印指定服务的信息,例如adb shell dumpsys window打印窗口管理服务的信息。 adb shell dumpsys activity:打印活动管理器服务的信息,包括活动栈、任务栈、任务信息等。 adb shell dumpsys battery:打印电池信息。 adb shell dumpsys wifi:打印Wi-Fi服务的信息。 adb shell dumpsys bluetooth:打印蓝牙服务的信息。 这只是一小部分常见的用法,adb shell dumpsys命令提供了许多其他服务的信息;
vscode搜索跳转行号:搜索栏 :加行数;
vscode搜索查询方法:搜索栏 @ 加方法名