将AOSP源码导入到Android Studio进行查看
生成iml和ipr文件
source build/envsetup.sh
lunch aosp_x86-eng # 或者直接输入lunch,然后选择对应的target
make idegen
development/tools/idegen/idegen.sh
说明:
- 执行
source build/envsetup.sh和./build/envsetup.sh是一样的。 - 可以直接执行
lunch aosp_x86-eng直接根据传入参数进行构建,也可以输入lunch根据提示进行选择。 - 执行完
lunch命令后直接执行make idegen即可,有些教程说需要先执行make命令,这是不需要的,我们只需要构建idegen模块,不需要构建所有模块。后者要花费很长时间,而且对机器性能要求很高。 - 命令执行过程中有些提示选项,如果没有报错导致中断,可以暂时忽略。
- 有的教程说使用
mmm development/tools/idegen/代替make idegen,如果你仔细了解AOSP构建系统,会清楚他们的功能是类似的。 - 执行
development/tools/idegen/idegen.sh,可能会提示权限相关问题,如果没有中断程序可以暂时忽略,有的教程建议增加sudo前缀提升命令执行权限,这里不推荐,因为之前如果source build/envsetup.sh是以普通用户执行的,所有的构建环境都是以普通用户为前提的,提升权限可能会导致问题,比如java: 未找到命令 - 以上命令成功执行后会在根目录生成
android.iml/android.ipr,两个文件。
将代码导入到Android Studio
绝大部分人的AOSP源码是放置到远程Linux机器上的,如果本地机和远程机间网络带宽很高,可以直接通过Samba服务器在本地机中访问远程机的AOSP源码。网络不是很好可以选择在本地机上进行一个目录,然后把android.iml/android.ipr以及需要查看的AOSP源码目录同步到该目录中,同步方式有很多,比如FTP/rsync等。
如果使用rsync进行同步,可以参考以下命令:
rsync -az --progress --delete --exclude=".git" ${USER_NAME}@${IP}:/${REMOTE_DIR} ${LOCAL_DIR} # REMOTE_DIR->LOCAL_DIR
rsync -az --progress --delete --exclude=".git" ${LOCAL_DIR} ${USER_NAME}@${IP}:/${REMOTE_DIR} # LOCAL_DIR->REMOTE_DIR
如果使用FTP命令,由于文件数目较多,直接下载或者上传目录耗时比较长,可以考虑使用tar将需要的文件和目录打包,然后再进行同步。
我选择的是把android.iml/android.ipr以及frameworks目录同步到本地。打开Android Studio,Open an Existed Project,选择android.ipr,导入时间根据机器性能以及源码规模相关,可能比较长。
android.iml文件中有目录的配置,如果打开整个工程非常慢,可以把里面无关的目录删除或者改到excludeFolder中。- 如果代码跳转到jar包的反编译文件中而不是导入的源码中,可以
File->Project Structure->Project Settings->Moudules->Dependencies,把Module source调整到最顶端(Alt+Up)。 - Android Studio默认只能打开10个代码文件,且文件打开多了以后显示不开的文件还会被隐藏,需要点击最右边的箭头才能查看。而最致命的是,如果不小心修改了某个文件,在标签页上,不会有任何的提示。
File->Settings->Editor->General->Editor Tabs根据自己的习惯进行配置。 - Android Studio只支持Java代码,C++代码只有最基础的着色功能。
- 如果想要支持断点调试,按照如下步骤操作:
File->Project Structure->Project Settings->Project->Project SDK,选择Android API .. PlatformRun->Edit Configurations->Add New Configuration->Android App,然后直接保存。- 此时可以使用Attach To Process进行调试。调试要注意源码和手机版本匹配。service相关代码需要attach到system_process进程。
参考资料
- Android Studio导入整个Android系统源码: https://blog.csdn.net/QQxiaoqiang1573/article/details/72903237
- 使用Android Studio导入Android系统源码: https://blog.csdn.net/turtlejj/article/details/83857897
将AOSP源码导入到Android Studio进行查看的更多相关文章
- Android Studio 导入 AOSP 源码
有了 AOSP 源码,接下来就是如何看了,可以直接文本看,可以用 Source Insight,我当然选择 Android Studio,Android Studio 是我熟悉且十分强大的工具.问题来 ...
- macOS(Sierra 10.12)上Android源码(AOSP)的下载、编译与导入到Android Studio
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- Android源码的下载、编译与导入到Android Studio【转】
本文转载自:http://wl9739.github.io/2016/05/09/Android%E6%BA%90%E7%A0%81%E7%9A%84%E4%B8%8B%E8%BD%BD%E3%80% ...
- 将Android系统源码导入Android studio的方法
Android源码目录结构如下: |-- Makefile|-- abi (applicationbinary interface,应用程序二进制接口,生成libgabi++.so相关库文件)|-- ...
- 将Android系统源码导入ecplise
Android系统源码中带有个IDE的配置文件,目录为:development/ide/ 如果要用eclipse导入查看系统源码,则将development/ide/eclipse/.classpat ...
- 将Android源码导入eclipse中的方法以及编译Android源码指定模块
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/53365659 将android源码导入eclipse.androidstudio. ...
- AOSP 源码整编单编
<AOSP 源码下载>完成后,就可以开编了. 整编 整编,顾名思义就是编译整个 Android 源码,最终 out 目录会生成几个重要的镜像文件,其中有 system.img.userda ...
- spring源码解析——spring源码导入eclipse
一.前言 众所周知,spring的强大之处.几乎所有的企业级开发中,都使用了spring了.在日常的开发中,我们是否只知道spring的配置,以及简单的使用场景.对其实现的代码没有进行深入的了 ...
- Tomcat源码导入eclipse的步骤
Tomcat源码导入eclipse 一.下载源码 1. 进入Apache 官网:http://tomcat.apache.org/ 2. 在左边侧选择要下载的源码的版本. 3. 或者直接通过Ar ...
随机推荐
- Spring MVC—数据绑定机制,数据转换,数据格式化配置,数据校验
Spring MVC数据绑定机制 数据转换 Spring MVC处理JSON 数据格式化配置使用 数据校验 数据校验 Spring MVC数据绑定机制 Spring MVC解析JSON格式的数据: 步 ...
- Java异常封装(自定义错误信息和描述)
一.checked异常和unchecked异常 checked异常: unchecked异常: 二.异常封装示例 2.1.添加一个枚举LuoErrorCode.java如下: 2.2.创建一个异常类B ...
- hadoop知识点总结(一)hadoop架构以及mapreduce工作机制
1,为什么需要hadoop 数据分析者面临的问题 数据日趋庞大,读写都出现性能瓶颈: 用户的应用和分析结果,对实时性和响应时间要求越来越高: 使用的模型越来越复杂,计算量指数级上升. 期待的解决方案 ...
- jackson学习之九:springboot整合(配置文件)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 系列文章汇总 jackson学习之一:基本信息 jac ...
- Educational Codeforces Round 89 (Rated for Div. 2) C. Palindromic Paths(贪心)
题目链接:https://codeforces.com/contest/1366/problem/C 题意 有一个 $n \times m$ 的 $01$迷宫,要使从 $(1,1)$ 到 $(n,m) ...
- Equal Numbers Gym - 101612E 思维
题意: 给你n个数vi,你有k次操作.每一次操作你可以从n个数里面挑一个数,然后使得这个数乘于一个正整数.操作完之后,这n个数里面不同数的数量就是权值.你要使得这个值尽可能小. 题解: 如果a%b== ...
- ACdream1414 Geometry Problem
Problem Description Peter is studying in the third grade of elementary school. His teacher of ...
- Codeforces Round #552 (Div. 3) E. Two Teams (模拟,优先队列,双向链表)
题意:有\(n\)个队员站成一排,有两个教练分别选人,每次选当前剩余人中的能力值最大的那个以及他两边相邻的\(k\)个人,问最后每个人所在队伍情况. 题解:优先队列模拟,以及双向链表,先用结构体存入每 ...
- hdu1828 Picture(线段树+扫描线+矩形周长)
看这篇博客前可以看一下扫描线求面积:线段树扫描线(一.Atlantis HDU - 1542(覆盖面积) 二.覆盖的面积 HDU - 1255(重叠两次的面积)) 解法一·:两次扫描线 如图我们可以 ...
- xml——dom&sax解析、DTD&schema约束
dom解析实例: 优点:增删改查一些元素等东西方便 缺点:内存消耗太大,如果文档太大,可能会导致内存溢出 sax解析: 优点:内存压力小 缺点:增删改比较复杂 当我们运行的java程序需要的内存比较大 ...