Android9系统源码下载
Android9源码编译
之前阅读Android源码都是使用直接从百度云盘下载源码,并导入Source Insight进行阅读,这个工具也很强大,类的查找搜索都很方便,源码也不需要进行编译,但是,是不能进行类的关联以及进行调试。
如果你已经将源码进行编译,得到了Android Studio项目配置文件,就可以直接导入Android Studio了。优势是,各种快捷键随心使用,而且可以进行系统源码调试。
1.编译好的Android源码导入Android Studio在源码目录,查看out/host/linux-x86/framework/idegen.jar是否存在,如果不存在,进入源码根目录执行如下的命令:
source build/envsetup.sh
lunch 6
mmm development/tools/idegen/
因为我编译源码使用的6,所以这里直接写的6了。
得到idegen.jar之后,在源码根目录执行如下命令:
sudo development/tools/idegen/idegen.sh
这时会在源码根目录生成android.iml 和 android.ipr 两个文件
更改这两个文件的读写权限:
sudo chmod 777 android.iml
sudo chmod 777 android.ipr
做好这些就可以导入AS工具了,为了快速的导入,可以更改android.iml中的配置,忽略一些不必要的源码文件。 *** 作步骤:
sudo gedit android.iml
搜索excludeFolder,在下面加入这些配置
<excludeFolder url="file://$MODULE_DIR$/bionic" />
<excludeFolder url="file://$MODULE_DIR$/bootable" />
<excludeFolder url="file://$MODULE_DIR$/build" />
<excludeFolder url="file://$MODULE_DIR$/cts" />
<excludeFolder url="file://$MODULE_DIR$/dalvik" />
<excludeFolder url="file://$MODULE_DIR$/developers" />
<excludeFolder url="file://$MODULE_DIR$/development" />
<excludeFolder url="file://$MODULE_DIR$/device" />
<excludeFolder url="file://$MODULE_DIR$/docs" />
<excludeFolder url="file://$MODULE_DIR$/external" />
<excludeFolder url="file://$MODULE_DIR$/hardware" />
<excludeFolder url="file://$MODULE_DIR$/kernel" />
<excludeFolder url="file://$MODULE_DIR$/out" />
<excludeFolder url="file://$MODULE_DIR$/pdk" />
<excludeFolder url="file://$MODULE_DIR$/platform_testing" />
<excludeFolder url="file://$MODULE_DIR$/prebuilts" />
<excludeFolder url="file://$MODULE_DIR$/sdk" />
<excludeFolder url="file://$MODULE_DIR$/system" />
<excludeFolder url="file://$MODULE_DIR$/test" />
<excludeFolder url="file://$MODULE_DIR$/toolchain" />
<excludeFolder url="file://$MODULE_DIR$/tools" />
<excludeFolder url="file://$MODULE_DIR$/.repo" />
.
如果是使用的虚拟机进行源码的编译,将源码拷贝到共享目录,这样Windows系统就可以看到编译好的系统源码了,通过AS的Open an existing Android Studio project选项选择android.ipr 就可以导入源码,可能需要几分钟的事件就加载好了。
这样就可以使用AS查看Android 源码了
2.使用Android Studio 对Android源码进行debug调试Android9的源码,对应的SDK版本是28,在SDK Manager下载对应的版本
点击File -> Project Structure–>SDKs配置项目的JDK、SDK。
查看是否有1.8(No Libraries),如果没有创建一个新的JDK,这里取名为1.8(No Libraries)
接着设置将Android SDK的Java SDK设置为1.8(No Libraries),这样Android源码使用的Java就是Android源码中的。
确保的项目的SDK为源码对应的SDK。
修改Manifest file等路径为下图中类似的路径
在AS最顶部的工具条中选择Edit Configurations,在Run/Debug Configurationsd框中点击左上角的加号,添加一个Android App配置,按下图进行配置:
在源码的根目录创建start_emulator.sh脚本,为了方便的启动模拟器,输入以下内容
#!/bin/bash
source build/envsetup.sh
lunch 6
emulator
更改shell文件的权限
sudo chmod 777 ./start_emulator.sh
启动模拟器
./start_emulator.sh
在系统源码找到ActivityStarter这个类,在startActivityMayWait这个方法打断点
点击菜单的Run–>Attach Debugger to Android Process,勾选Show all processer,选择system_process
在模拟器上随便启动一个应用程序就进入断点了
可以调试源码,对系统的源码的运行过程以及理解都会有很大的帮助,也可以学习到源码中优秀的思想以及技巧。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)