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:\ABC\SM8250_Q\android\out\target\product\kona\system\framework\services.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 (需要科学上网)

如果只改了一个文件: android\frameworks\base\core\java\android\view\ViewRootImpl.java
编译命令: ./mk_android.sh -t userdebug -p frameworks/base:framework
只编译一个framework.jar文件


2022年3月6日
上海徐汇

更多推荐

Android Framework开发