Android Studio 导入framework代码,并对framework断点调试,
推荐IDE使用Android Studio。
注意:
也可在Android Studio里直接编辑代码,例如修改 com/android/server/power/PowerManagerService.java 这个文件,
先将 com/android/server/power 这个文件夹改成777,再将PowerManagerService.java 改成777
这样将可编译保存文件了,不然会提示备份出错。
具体命令:
sudo chmod 777 android/frameworks/base/services/core/java/com/android/server/power/
sudo chmod 777 android/frameworks/base/services/core/java/com/android/server/power/DisplayManagerService.java
在android目录下,编译命令:
./mk_android.sh -t userdebug -p frameworks/base/services/
services.jar编译好了,就可以push到手机上了,命令如下:
adb devices
adb remount
adb push D:ABCSM8250_Qandroidouttargetproductkonasystemframeworkservices.jar system/framework/
adb shell stop && adb shell start //敲完后,Android Dalvik虚拟机会重启(注意 不是手机重启) 后面再push文件时,adb remount不需要再敲。 手机重启时,敲一遍adb remount
LOG
加log
Slog.i(“liu===”, "liu— iR_is_running = " + iR_is_running);
log输出
adb logcat -s liu
=============================================
framework开发经验
把调用堆栈显示出来
if (DEBUG_SPEW) {
StackTraceElement[] stack = new Throwable().getStackTrace();
for (StackTraceElement element : stack)
{
Slog.d(TAG, “PowerMS |—-” + element.toString());
}
}
因为Android Studio由于内存的原因,一般不能导入所有源码。 所以结合网页看源码,网页上所有类、变量都能找到定义。
Google源码网址: cs.android.com (需要科学上网)
如果只改了一个文件: androidframeworksbasecorejavaandroidviewViewRootImpl.java
编译命令: ./mk_android.sh -t userdebug -p frameworks/base:framework ,
只编译一个framework.jar文件
2022年3月6日
上海徐汇



