不会查看系统源码,还搞什么Android?

  • 时间:2019-06-11 02:54 作者:Android技术干货分享 来源:Android技术干货分享 阅读:189
  • 扫一扫,手机访问
摘要:前言尽管标题有点雷,但目的还是为了大家好。在上一篇文章如何方便快速的整编Android 9.0系统源码?)中,我们对系统源码进行了编译,这篇文章我们接着来学习如何将系统源码导入到编辑器中,以便于查看和调试源码。关于查看源码,可以使用Android Studio、Eclipse、Sublime、Sou

前言

尽管标题有点雷,但目的还是为了大家好。

在上一篇文章如何方便快速的整编Android 9.0系统源码?
)中,我们对系统源码进行了编译,这篇文章我们接着来学习如何将系统源码导入到编辑器中,以便于查看和调试源码。关于查看源码,可以使用Android Studio、Eclipse、Sublime、Source Insight等软件,这里我推荐使用Source Insight,但是有的同学可能不是很习惯,而且Source Insight是Windows平台的软件,Mac平台用不了,那么使用Android Studio是一个不错的选择,而且使用Android Studio还可以调试源码。这篇文章就来详情Source Insight和Android Studio如何导入源码。

1. Source Insight导入系统源码

Source Insight只能查看源码,不能调试源码,假如只想在Source Insight中查看源码,可以直接从百度网盘:https://pan.baidu.com/s/1ngsZs 将源码下载下来。假如想在Android Studio中查看源码,那么最好还是在Linux环境下将AOSP源码下载下来。

新建源码项目

安装软件后,首先要新建源码项目。通过菜单项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.shlunch [选择整编时选择的参数或者者数字]mmm development/tools/idegen/

假如没整编过源码,可以直接执行如下命令单编idegen板块:

source build/ensetup.sh  make idegen

关于Android系统源码的编译可以查看如何方便快速的整编Android 9.0系统源码?
)这篇文章。

idegen板块编译成功后,会在 out/host/linux-x86/framework目录下生成idegen.jar,执行如下命令:

sudo development/tools/idegen/idegen.sh

这时会在源码根目录生成android.iml 和 android.ipr 两个文件,这两个文件一般是只读模式,这里建议改成可读可写,否则,在更改少量项目配置的时候可能会出现无法保存的情况。

sudo chmod 777 android.imlsudo 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上。
通过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去调试系统源码。

针对Android程序员,我这边给大家整理了少量资料,包括不限于高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!

资料领取:点赞+加群免费获取 Android IOC架构设计

加群 Android IOC架构设计领取获取往期Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、混合式开发(ReactNative+Weex)全方面的Android进阶实践技术,群内还有技术大牛一起探讨交流处理问题。

  • 全部评论(0)
最新发布的资讯信息
【系统环境|服务器应用】树莓派安装TensorFlow(2020-04-24 21:11)
【系统环境|服务器应用】防面试-SD_WebImage(2020-04-24 21:11)
【系统环境|服务器应用】推荐一款视频控件xgplayer(2020-04-24 21:11)
【系统环境|服务器应用】PostgreSQL 源码解读(27)- 查询语句#12(查询优化-上拉子链接#2)(2020-04-24 21:11)
【系统环境|服务器应用】如何轻松学习JavaScript?(2020-04-24 21:10)
【系统环境|服务器应用】【源码剖析】Launcher 8.0 源码 (12) --- Launcher 启动流程 第五步之计算桌面各布局细节参数(2020-04-24 21:10)
【系统环境|服务器应用】前台碰撞室之console.log与文本字符(2020-04-24 21:10)
【系统环境|服务器应用】好用的Middleware实现(2020-04-24 21:10)
【系统环境|服务器应用】前台面试每日 3+1 —— 第373天(2020-04-24 21:10)
【系统环境|服务器应用】绍圣--kafka之生产者(五)(2020-04-24 21:10)
手机二维码手机访问领取大礼包
返回顶部