导⼊系统源码两种⽅式:SourceInsight和AndroidStudio
关联系列
前⾔
在上⼀篇⽂章中,我们对系统源码进⾏了编译,这篇⽂章我们接着来学习如何将系统源码导⼊到编辑器中,以便于查看和调试源码。关于查看源码,可以使⽤Android Studio、Eclipse、Sublime、Source Insight等软件,这⾥我推荐使⽤Source Insight,但是有的同学可能不是很习惯,⽽且Source Insight是Windows平台的软件,Mac平台⽤不了,那么使⽤Android Studio是⼀个不错的选择,⽽且使⽤Android Studio还可以调试源码。
1. Source Insight导⼊系统源码
新建源码项⽬
安装软件后,⾸先要新建源码项⽬。通过菜单项Project→New Project会弹出提⽰框。
这⾥我们指定源码项⽬的名称为Android_8.0.0,然后点击OK按钮进⼊“New Project Settings”界⾯。
上图箭头指向的Browse按钮来选择本地系统源码所在的路径,⽐如我的系统源码路径为:D:/Android/android-8.0.0_r1 。选择好加载路径后点击OK按钮会进⼊“Add and Remove Project Files”界⾯,在这个界⾯可以向项⽬中添加整个Android系统源码,也可以只把源码部分⽬录添加到项⽬中,以后再根据需要添加其他⽬录。如果向项⽬添加整个Android系统源码加载时会⾮常慢,这⾥我们只添加如下源码⽬录:frameworks/、libcore/、packages/、system/、art/和libnativehelper/,这⼏个⽬录基本上可以满⾜⽇常的系统源码阅读了,如下图所⽰。
点击Add Tree按钮就会将选择的⽬录源码加载到Android_8.0.0项⽬中,这个时候会弹出加载进度条,加载完毕后点击窗⼝的关闭按钮就可以了。
定位⽂件
Source Insight的定位⽂件功能⼗分强⼤,我们只需要知道源码⽂件名就可以轻松到它,⽐如我们要MediaPlayer.java,只要在⽂件搜索框输⼊MediaPlayer.java即可:
全局搜索
Source Insight另⼀个好⽤的功能就是全局搜索,默认快捷键为:CTRL+/,或者点击最上⾯⼯具栏类似R的图标。在Search in的输⼊选项中我们可以⾃定义搜索的范围,⽐如我们想查所有Java⽂件中引⽤MediaPlayer类的情况,就可以像下图⼀样进⾏操作。
当然,Source Insights的功能远不只以上⼏种,相信随着使⽤次数的增多,你就会熟练掌握它的⼤部分功能,这⾥就不过多介绍了。
2. Android Studio导⼊系统源码
Source Insight导⼊源码不需要对源码进⾏编译,但是Android Studio导⼊系统源码需要对源码进⾏编译,⽣成AS的项⽬配置⽂件。
⽣成AS的项⽬配置⽂件
如果你整编过源码,查看out/host/linux-x86/framework/idegen.jar是否存在,如果不存在,进⼊源码根⽬录执⾏如下的命令:
source build/envsetup.sh
lunch [选择整编时选择的参数或者数字]
mmm development/tools/idegen/
如果没整编过源码,可以直接执⾏如下命令单编idegen模块:
source build/ensetup.sh
make idegen
关于Android系统源码的编译可以查看这篇⽂章。
idegen模块编译成功后,会在 out/host/linux-x86/framework⽬录下⽣成idegen.jar,执⾏如下命令:
sudo development/tools/idegen/idegen.sh
eclipse android这时会在源码根⽬录⽣成android.iml 和 android.ipr 两个⽂件,这两个⽂件⼀般是只读模式,这⾥建议改成可读可写,否则,在更改⼀些项⽬配置的时候可能会出现⽆法保存的情况。
sudo chmod 777 android.iml
sudo chmod 777 android.ipr
配置AS的项⽬配置⽂件
由于要将所有源码导⼊AS会导致第⼀次加载很慢,可以在android.iml中修改excludeFolder配置,将不需要看的源码排除掉。等源码项⽬加载完成后,还可以通过AS对Exclude的Module进⾏调整。如果你
的电脑的性能很好,可以不⽤进⾏配置。
在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" />
导⼊系统源代码到AS中
在AS安装⽬录的bin⽬录下,打开studio64.vmoptions⽂件,根据⾃⼰电脑的实际情况进⾏设置,这⾥修改为如下数值:
-Xms1024m
-Xmx1024m
如果你是在VirtualBox中下载的系统源码,那么将VirtualBox中的系统源码拷贝到共享⽂件夹中,这样源码就会⾃动到Windows或者Mac 上,如果你不知道如何设置VirtualBox共享⽂件夹,可以查看这篇⽂章。
通过AS的Open an existing Android Studio project选项选择android.ipr 就可以导⼊源码,这⾥我⽤了⼤概7分钟就导⼊完毕。导⼊后⼯程⽬录切换为Project选项就可以查看源码。
配置项⽬的JDK、SDK
由于我们下载的是9.0的AOSP源码,SDK版本也应该对应为API 28,如果没有就去SDK Manager下载即可。
点击File -> Project Structure–>SDKs配置项⽬的JDK、SDK。
创建⼀个新的JDK,这⾥取名为1.8(No Libraries),删除其中classpath标签页下⾯的所有jar⽂件。
接着设置将Android SDK的Java SDK设置为1.8(No Libraries),这样Android源码使⽤的Java就是Android源码中的。
确保的项⽬的SDK为源码对应的SDK。
Exclude不需要的代码⽬录
File -> Project Structure -> Modules中可以通过Excluded来筛选代码⽬录,⽐如我们选择bionic⽬录,点击Excluded,bionic⽬录会变为橙⾊,bionic字段会出现在右侧视图中,说明该⽬录已经被Excluded掉,通俗来讲就是被排除在⼯程之外。如果不希望bionic⽬录被Excluded掉,再次点击Excluded,bionic⽬录会变为灰⾊。
总结
这篇我们学习了Source Insight和Android Studio导⼊系统源码的⽅法,但是具体的查看源码的⽅式没有讲解,这些需要读者在使⽤中逐步去掌握,下⼀篇我们会学习如何使⽤Android Studio去调试系统源码。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论