Android源码目录结构以下:html
|-- Makefile
|-- abi (applicationbinary interface,应用程序二进制接口,生成libgabi++.so相关库文件)
|-- art (google在4.4后加入用来代替Dalvik的运行时)
|-- bionic (Android的C library,即C库文件)
|-- bootable (启动引导相关代码)
|-- build (存放系统编译规则及generic等基础开发配置包)
|-- cts (Android兼容性测试套件标准)
|-- dalvik (dalvik JAVA虚拟机)
|-- developers (开发者用,存放几个例子)
|-- development (开发者须要的一些例程及工具)
|-- device (设备相关代码,这是各厂商须要配置和修改的代码)
|-- docs (介绍开源相关文档)
|-- external (android使用的一些开源的模组)
|-- frameworks (核心框架——java及C++语言)
|-- hardware (部分厂家开源的硬解适配层HAL代码)
|-- kernel (驱动内核相关代码)
|-- libcore (核心库相关)
|-- libnativehelper (JNI用到的库)
|-- ndk (ndk相关)
|-- out (编译完成后的代码输出目录)
|-- packages (应用程序包)
|-- pdk (google用来减小碎片化的东西)
|-- prebuilt (x86和arm架构下预编译的一些资源)
|-- sdk (sdk及模拟器)
|-- tools (工具)
|-- system (底层文件系统库、应用及组件——C语言)
|-- vendor (厂商定制代码)java
咱们能够发如今源码根目录有个development文件夹,里面放了开发者须要的一些例程及工具,要将Android系统源码导入Android studio就须要用到里面的工具。android
首先导入系统源码须要占用大量的内存因此须要在Android studio安装目录下的bin文件夹中的studio64.exe.vmoptions或者studio.exe.vmoptions文件中中-Xms和-Xmx的值改大(根据电脑内存自行修改)。架构
接下来,执行Android系统代码编译环境相关初始化命令后,执行下面命令:app
mmm development/tools/idegen/
而后执行框架
development/tools/idegen/idegen.sh
等出现下面结果ionic
Read excludes: 13ms
Traversed tree: 143977ms
执行完后,会在源码的根目录下生成android.ipr和android.iml文件。使用Android studio打开android.ipr文件,就能够导入系统源码了。ide
因为Android系统源码比较庞大,导入比较耗时,建议先修改android.iml排除一些代码,语法以下:工具
<excludeFolder url="file://$MODULE_DIR$/.repo" />
好比,我只关注framework中的源码,我就能够把其余目录排除(其余目录只是以文件方式导入,其中的类之间不存在连接)。测试
<excludeFolder url="file://$MODULE_DIR$/.repo" /> <excludeFolder url="file://$MODULE_DIR$/abi" /> <excludeFolder url="file://$MODULE_DIR$/art" /> <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$/libcore" /> <excludeFolder url="file://$MODULE_DIR$/libnativehelper" /> <excludeFolder url="file://$MODULE_DIR$/ndk" /> <excludeFolder url="file://$MODULE_DIR$/out" /> <excludeFolder url="file://$MODULE_DIR$/packages" /> <excludeFolder url="file://$MODULE_DIR$/pdk" /> <excludeFolder url="file://$MODULE_DIR$/prebuilt" /> <excludeFolder url="file://$MODULE_DIR$/prebuilts" /> <excludeFolder url="file://$MODULE_DIR$/sdk" /> <excludeFolder url="file://$MODULE_DIR$/system" /> <excludeFolder url="file://$MODULE_DIR$/tools" />
导入源码后如何设置源码依赖
首先删除原来的依赖,只留下下图红框项
把SDKs中没必要要的SDK项删除,同时把Android API的classpath和sourcepath下的内容都删掉
接着点击加号的JARs or directories将你源码的frameworks及external和你用到的其余跳转目录添加到依赖中,而后apply便可。
参考:
http://www.cnblogs.com/Lefter/p/4176991.html
http://www.jianshu.com/p/c2389cb35565