1 背景

上路了,准备开始重操那两年的旧业,后悔之前在上家公司做Amlogic和Realtak方案盒子时没有养成写博客的习惯,这算是开篇之作吧,顺带也算是给一个网友的答疑吧。不多说,该篇只是工具讲解而已。

关于Android Studio对于应用层App开发的技巧和配置前面我写过文章分析的,这里不再解释说明,具体查看我的这一片博文《Android Studio入门到精通 》。这里我们主要说明的是用它来看源码的相关配置(该实例依据官方源码android-5.1.1_r14进行配置说明)。

以前在上家公司查看修改源码时还是使用的Eclipse导入部分代码的方式,而现在在android源码中发现有一个development/tools/idegen目录,查了一下发现是生成IDE的project文件(主要是intellij的project文件,其实也就是Android Studio的),所以说福利工具就这么来了,欲知详情,请看下文。

2 配置使用过程

2-1 基础准备工作

首先你得安装配置了Android Studio,具体不明白的参考《Android Studio入门到精通 》。

接着你得下载好了源码Code,至于如何下载这里不再说明,比较简单,上官网查看就行了。

其次你需要保证源码已经被编译生成了out相关目录文件。

好了,如上就是一些基本准备工作,针对定制源码或者原生源码来说,这些准备步骤都是必须的,没必要再强调了。

2-2 配置导入及使用

2-2-1 编译源码idegen模块及生成AS配置文件(*.ipr)

在开始编译idegen模块前,你一定知道需要先全局编译出out目录及相关文件吧,这个不再过多说了,我们通过如下命令编译idegen模块:

mmm development/tools/idegen/

这行命令的意思是编译idegen这个模块项目,然后生成idegen.jar文件(不信你自己去查看这个模块的Android.mk的目标吧,不多解释)。运行完以后如果看到如下信息则说明编译OK:

......
#### make completed successfully (7 seconds) ####

接着执行如下脚本:

development/tools/idegen/idegen.sh

这行命令的意思是在根目录生成对应的android.ipr、android.iml IEDA工程配置文件。等待片刻得到类似如下信息说明OK:

Read excludes: 21ms
Traversed tree: 194799ms

通过如上操作我们就完成了基本的源码配置工作。

2-2-2 导入Android Studio前的一些客户化操作

大家都知道使用Eclipse倒入源码很慢,Android Studio导入源码时也慢,所以建议修改android.iml文件(将自己不用的代码去掉),然后再导入Studio。

就像下面摘取的android.iml文件1887行开始的这些一样:

<sourceFolder url="file://$MODULE_DIR$/./sdk/testapps/userLibTest/src" isTestSource="true"/>
<sourceFolder url="file://$MODULE_DIR$/./tools/external/fat32lib/src/main/java" isTestSource="false"/>
<excludeFolder url="file://$MODULE_DIR$/out/eclipse"/>
<excludeFolder url="file://$MODULE_DIR$/.repo"/>
<excludeFolder url="file://$MODULE_DIR$/external/bluetooth"/>
<excludeFolder url="file://$MODULE_DIR$/external/chromium"/>
<excludeFolder url="file://$MODULE_DIR$/external/icu4c"/>
<excludeFolder url="file://$MODULE_DIR$/external/webkit"/>
<excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs"/>
<excludeFolder url="file://$MODULE_DIR$/out/host"/>
<excludeFolder url="file://$MODULE_DIR$/out/target/common/docs"/>
<excludeFolder url="file://$MODULE_DIR$/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates"/>
<excludeFolder url="file://$MODULE_DIR$/out/target/product"/>
<excludeFolder url="file://$MODULE_DIR$/prebuilt"/>

我们可以仿照上面这段代码的<excludeFolder url="file://$MODULE_DIR$/.repo"/>写法一样过滤掉不需要的内容,这样在导入时就会快很多。

也可以通过Android Studio的Project Stucture 打开左侧Modules,然后将右侧Sources中一些目录Excluded掉。

2-2-3 使用Android Studio导入源码工程

有了如上的这些操作以后,我们打开Android Studio,然后选择打开一个现有的Android Studio项目,然后选择打开源码根目录下的android.ipr文件,然后出现如图一样的索引即可等待导入就行:tu

到目前为止我们就可以方便的使用Android Studio查看源码啦。如下图所示:

吊不屌!!!

2-3 使用技巧

上图我们看见了,可以通过Android Studio搜索整套源码的代码了。但是这时候如果你打开一个Service.java类,然后把鼠标放在其中任意方法的Intent参数上按住CTRL+鼠标左键跳转到Intent类你会发现跳转过去的是一个Intent.class文件,为啥呢?因为他跳转的是你的默认SDK中的jar内部的class文件。既然要修改查看整套源码,这么跳转得多蛋疼啊,所以我们需要配置让其能跳转到Intent.java文件,具体做法如下:

首先删掉依赖中的所有依赖,只保留下图中没被选中的那两个(当然你可以选择保留一些你用到的其他jar),如下:

接着点击加号的JARs or directories将你源码的frameworks及external和你用到的其他跳转目录添加到依赖中,然后apply即可。

这时候我们在像上面一样打开Service.java跳转Intent,你会发现像下图一样直接跳转到你源码路径下的Intent.java文件了,如下:

到此对于平时只是查看源码的人来说已经够用了。

3 总结

俗话说工欲善其事必先利其器,你会发现使用Android Studio比Eclipse和Source Insight都好很多(当然了,SubText还是很强大的),无论是代码提示还是跳转、还是Python Shell等插件支持等都很强大,慢慢体验吧。

顺带说一句,Google的野心真的很大,看来Android Studio即将要被他们打造为全能IDE了。

4 附加README

附上原版的英文README文档,英语高手直接看这里就行:

IDEGen automatically generates Android IDE configurations for IntelliJ IDEA
and Eclipse. Your IDE should be able to compile everything in a reasonable
amount of time with no errors.

If you’re using IntelliJ…

If this is your first time using IDEGen...IDEA needs a lot of memory. Add "-Xms748m -Xmx748m" to your VM optionsin "IDEA_HOME/bin/idea.vmoptions" on Linux or"IntelliJ IDEA.app/Contents/Info.plist" on OS X.Create a JDK configuration named "1.6 (No Libraries)" by adding a newJDK like you normally would and then removing all of the jar entriesunder the "Classpath" tab. This will ensure that you only get access toAndroid's core libraries and not those from your desktop VM.From the project's root directory...Repeat these steps after each sync...1) make (to produce generated .java source)2) development/tools/idegen/idegen.sh3) Open android.ipr in IntelliJ. If you already have the project open,hit the sync button in IntelliJ, and it will automatically detect theupdated configuration.If you get unexpected compilation errors from IntelliJ, try running"Build -> Rebuild Project". Sometimes IntelliJ gets confused after theproject changes significantly.

If you’re using Eclipse…

If this is your first time using IDEGen...Edit eclipse.ini ("Eclipse.app/Contents/MacOS/eclipse.ini" on OS X) andadd "-Xms748m -Xmx748m" to your VM options.Configure a JRE named "1.5 (No Libraries)" under "Preferences -> Java ->Installed JREs". Remove all of the jar entries underneath "JRE systemlibraries". Eclipse will not let you save your configuration unless atleast one jar is present, so include a random jar that won't get in theway.From the project's root directory...Repeat these steps after each sync...1) make (to produce generated .java source)2) development/tools/idegen/idegen.sh3) Import the project root directory into your Eclipse workspace. If youalready have the project open, simply refresh it (F5).

Excluding source roots and jars

IDEGen keeps an exclusion list in the "excluded-paths" file. This file
has one regular expression per line that matches paths (relative to the
project root) that should be excluded from the IDE configuration. We
use Java's regular expression parser (see java.util.regex.Parser).You can create your own additional exclusion list by creating an
"excluded-paths" file in the project's root directory. For example, you
might exclude all apps except the Browser in your IDE configuration with
this regular expression: "^packages/apps/(?!Browser)".

Controlling source root ordering (Eclipse)

You may want some source roots to come before others in Eclipse. Simply
create a file named "path-precedence" in your project's root directory.
Each line in the file is a regular expression that matches a source root
path (relative to the project's root directory). If a given source root's
path matches a regular expression that comes earlier in the file, that
source root will come earlier in the generated configuration. If a source
root doesn't match any of the expressions in the file, it will come last,
so you effectively have an implicit ".*" rule at the end of the file.For example, if you want your applications's source root to come first,
you might add an expression like "^packages/apps/MyApp/src$" to the top
of the "path-precedence" file.  To make source roots under ./out come last,
add "^(?!out/)" (which matches all paths that don't start with "out/").

使用Android Studio导入源码相关推荐

  1. Android笔记 - android studio导入源码

    前提 安装好android studio 拉好代码并并编译OK 编译源码idegen模块及生成AS配置文件(*.ipr) 在开始编译idegen模块前,需要先全局编译出out目录及相关文件吧,我们通过 ...

  2. Android Studio : 导入源码包/源码库/公共库/开源库

    本文以导入一个GItHub的开源库(https://github.com/Trinea/AndroidCommon)为例,教大家如何导入开源库,希望搜索能排到第一,以免被转载狗误导浪费时间 1.从Gi ...

  3. android studio查看源码

    android studio 查看源码,搜索类,切换到 All,勾选 include non-project items 选项,输入类名就可以打开了.

  4. Android studio成品源码项目日历备忘录记事本,该日历备忘录app实现了日历查看

    Android studio成品源码项目日历备忘录记事本,该日历备忘录app实现了日历查看,添加备忘录,闹钟提醒,删除备忘录等功能,适合新手学习,数据库sqlite. ID:4535654880904 ...

  5. Android studio成品源码项目日历备忘录记事本,该日历备忘录app实现了日历查看,添加备忘录

    Android studio成品源码项目日历备忘录记事本,该日历备忘录app实现了日历查看,添加备忘录,闹钟提醒,删除备忘录等功能,适合新手学习,数据库sqlite. 程序开开发发,全网回复最快,效率 ...

  6. android studio im源码,Android Studio 导入 AOSP 源码

    有了 AOSP 源码,接下来就是如何看了,可以直接文本看,可以用 Source Insight,我当然选择 Android Studio,Android Studio 是我熟悉且十分强大的工具.问题来 ...

  7. Linux android studio 安卓源码导入及调试

    1.AndroidStudio导入源码和调试 需要注意以下,JDK的配置,android studio下JDK一般使用对应于SDK版本的默认JDK版本,例如android studio5.0源码--- ...

  8. android sutdio导入源码教程,《AndroidStudio导入安卓源码-idegen》---可方便查看安卓源代码...

    idegen是Android源码中的一个模块,需要编译一下.生成一个jar包.然后再进行构建生成AndroidStudio配置相关文件. > 什么是idegen 要将Android系统源代码工程 ...

  9. android studio 以源码形式导入volley作为library,SDK的目录结构

    对于android studio我们一直提倡使用源码或library形式集成引用的库或者第三方类,方便管理和修改. 尽量不使用jar包的形式. volley的源码被谷歌集成到了SDK中,我们可以去SD ...

  10. android studio 项目源码_这个标星 2.3k+ 的项目带你 Android 源码分析从入门到放弃...

    上次写了一篇 Android 开发者的福利,介绍几款看源码的工具 ,这篇文章主要介绍了三款看 Android 源码的工具,后台有很多同学留言问,有没有分析源码的. 分析源码的文章也很多,但大多数文章不 ...

最新文章

  1. xslt 标签取集合第一条数据_XSLT函数集合:数值函数、字符串函、节点集函数和布尔函数...
  2. 也来玩玩MongoDB
  3. 消息队列概述[幻灯片]
  4. Java LocalDate类| isSupported()方法与示例
  5. linux携带密码登录其他远程机
  6. LINUX下载编译libtheora
  7. 【LaTex-错误和异常】\verb ended by end of line.原因是因为闭合边界符没有在\verb命令所属行中出现;\verb命令的正确和错误用法、verbatim环境的用法
  8. 你不知道的javaScript读书笔记(六)
  9. 比尔·盖茨创立的泰拉能源获SK集团投资2.5亿美元;阿特拉斯科普柯中国工业气体装备研发生产基地落户苏州 | 美通企业日报...
  10. @Autowired的用法和作用
  11. python正弦函数拟合_python生成任意频率正弦波方式
  12. 不再羡慕小说中的爱情...
  13. JavaWeb仓库管理系统,表弟的棒棒糖到底谁拿了
  14. 《爬虫逆向进阶实战》书籍介绍
  15. ​迅雷弹窗被叫停,还能飞多远?
  16. 图片去水印有什么好的工具吗?怎么去除水印?
  17. PCA(Principal Component Analysis,主成分分析)降维
  18. html ap div,AP DIV 在哪里, 如何添加? AP DIV 的运用 / 布局 在哪里?
  19. BIMserver入门安装部署 - 环境搭建、数据导入及预览
  20. PHP做大转盘抽奖的思路,jQuery+PHP实现微信转盘抽奖功能的方法

热门文章

  1. jspx格式手机打开,jspx来自埃及的java web快速开发框架
  2. stvd c语言编译器,STM8--STVD编译工具安装与程序下载
  3. 轮播图背景图铺满整个div
  4. gartner 服务器虚拟化 市场份额 2013,Gartner:VMware成虚拟化魔力象限领导者
  5. 【从零开始游戏开发】EmmyLua插件注解功能
  6. node.js 将jade变为html
  7. string类的常用方法
  8. Wishbone总线
  9. ATmega / AVR单片机型号标识规则及选型
  10. iis启动服务时提示在本地计算机 无法启动iis admin服务,iis 依存服务和组没法启动...