Android源码目录结构如下:

|-- 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 (厂商定制代码)

我们可以发现在源码根目录有个development文件夹,里面放了开发者需要的一些例程及工具,要将Android系统源码导入Android studio就需要用到里面的工具。

首先导入系统源码需要占用大量的内存所以需要在Android studio安装目录下的bin文件夹中的studio64.exe.vmoptions或者studio.exe.vmoptions文件中中-Xms和-Xmx的值改大(根据电脑内存自行修改)。

接下来,执行Android系统代码编译环境相关初始化命令后,执行下面命令:

mmm development/tools/idegen/

然后执行

development/tools/idegen/idegen.sh

等出现下面结果

Read excludes: 13ms
Traversed tree: 143977ms

执行完后,会在源码的根目录下生成android.ipr和android.iml文件。使用Android studio打开android.ipr文件,就可以导入系统源码了。

由于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

将Android系统源码导入Android studio的方法的更多相关文章

  1. 将Android系统源码导入ecplise

    Android系统源码中带有个IDE的配置文件,目录为:development/ide/ 如果要用eclipse导入查看系统源码,则将development/ide/eclipse/.classpat ...

  2. Android系统源码导入到eclipse

    1.把eclipse工程配置文件复制到android源码根目录下      cp development/ide/eclipse/.classpath ./  2. 在android源码根目录下新建文 ...

  3. Android FrameWork 学习之Android 系统源码调试

    这是很久以前访问掘金的时候 无意间看到的一个关于Android的文章,作者更细心,分阶段的将学习步骤记录在自己博客中,我觉得很有用,想作为分享同时也是留下自己知识的一些欠缺收藏起来,今后做项目的时候会 ...

  4. Android FrameWork学习(二)Android系统源码调试

    通过上一篇 Android FrameWork学习(一)Android 7.0系统源码下载\编译 我们了解了如何进行系统源码的下载和编译工作. 为了更进一步地学习跟研究 Android 系统源码,今天 ...

  5. 【安卓本卓】Android系统源码篇之(一)源码获取、源码目录结构及源码阅读工具简介

    前言        古人常说,“熟读唐诗三百首,不会作诗也会吟”,说明了大量阅读诗歌名篇对学习作诗有非常大的帮助.做开发也一样,Android源码是全世界最优秀的Android工程师编写的代码,也是A ...

  6. 关于查看Android系统源码【Written By KillerLegend】

    可能你会想下载Android系统源码,但是我不知道你会看多少系统的源码,如果你对源码只是偶尔看一次的话,推荐你在线看Android的系统源码,下面提供几种查看android系统源码的方法. 1:打开这 ...

  7. 【转】编译Android系统源码和内核源码

    原文网址:http://blog.csdn.net/jiangwei0910410003/article/details/37988637 好长时间没有写blog了,之所以没有写,主要还是工作上的事, ...

  8. FW 编译Android系统源码和内核源码

    编译Android系统源码和内核源码 分类: Android2014-07-21 20:58 7287人阅读 评论(28) 收藏 举报 好长时间没有写blog了,之所以没有写,主要还是工作上的事,发现 ...

  9. 如何阅读Android系统源码-收藏必备

    对于任何一个对Android开发感兴趣的人而言,对于android系统的学习必不可少.而学习系统最佳的方法就如linus所言:"RTFSC"(Read The Fucking So ...

随机推荐

  1. 子组件索引$refs

    $refs只在组件渲染完成之后才填充,并且它是非响应式的,它仅仅作为一个直接访问访问子组件的应急方案-----应当避免的模板中或者计算属性中使用$refs

  2. python 去停用词

    Try caching the stopwords object, as shown below. Constructing this each time you call the function ...

  3. LWDB

    题意: 给一棵 $n$ 个节点的树,维护两种操作: 1.将距离 $x$ $distance \leq d$ 的点染成 $c$ 2.询问 $x$ 的颜色. 解法: 首先将染色可以转换为每个时间对应一个颜 ...

  4. Flutter实战视频-移动电商-57.购物车_在Model中增加选中字段

    57.购物车_在Model中增加选中字段 先修改model类 model/cartInfo.dart类增加是否选中的属性 修改provide 修改UI部分pages/cart_page/cart_it ...

  5. Identity Server 4 原理和实战(完结)_为 MVC 客户端刷新 Token

    服务端修改token的过期使劲为60秒 过期了 仍然还能获取到api1的资源 api1,设置每隔一分钟就验证token 并且要求token必须要有超时时间这个参数, 1分钟后提示超时,两边都是一分钟, ...

  6. SQL——登陆触发器实现限制IP

    [转载]原文地址:https://www.baidu.com/link?url=N-SM28ge21TTYky79dYk8otsjKgYCIpy-0RBSvMV25f8KSOsYczhxTOCzeNZ ...

  7. POJ1182【种类并查集】

    思路: ---来源百度 0表示它与根结点为同类, 1表示它吃根结点, 2表示它被根结点吃. 判断两个点a, b的关系,我们令p = Find(a), q = Find(b),即p, q分别为a, b子 ...

  8. profiler Reserved Total

    Used Total和Reserved 均是物理内存,其中Reserved是unity向系统申请的总内存,Unity底层为了不经常向系统申请开辟内存,开启了较大一块内存作为缓存,即所谓的Reserve ...

  9. [HNOI2010] 公交线路 bus

    标签:状态压缩+矩阵快速幂. 题解: 首先看范围,p<=10,那么我们可以想到状态压缩.我们把从一个长度为10的区间进行压缩,1代表可以,那么当值一个区间的1的个数为k个,我们就认为他是合法的. ...

  10. IT兄弟连 JavaWeb教程 JSP静态包含和动态包含的区别

    JSP静态包含(<%@ include>和JSP动态包含<jsp:include>同样都可以用来包含文件,但是他们之间是存在很大差别的.下面将对include指令与includ ...