如何用 Intellij 导入 Android 源码?

如题所述

针对定制源码或者原生源码来说,这些准备步骤都是必须的,没必要再强调了。
2-2 配置导入及使用
2-2-1 编译源码idegen模块及生成AS配置文件(*.ipr)
在开始编译idegen模块前,你一定知道需要先全局编译出out目录及相关文件吧,这个不再过多说了,我们通过如下命令编译idegen模块:
mmm development/tools/idegen/1

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

接着执行如下脚本:
development/tools/idegen/idegen.sh1

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

通过如上操作我们就完成了基本的源码配置工作。
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"/>1234567891011121314

我们可以仿照上面这段代码的<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 options
in "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 new
JDK like you normally would and then removing all of the jar entries
under the "Classpath" tab. This will ensure that you only get access to
Android'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.sh
3) Open android.ipr in IntelliJ. If you already have the project open,
hit the sync button in IntelliJ, and it will automatically detect the
updated configuration.

If you get unexpected compilation errors from IntelliJ, try running
"Build -> Rebuild Project". Sometimes IntelliJ gets confused after the
project 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) and
add "-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 system
libraries". Eclipse will not let you save your configuration unless at
least one jar is present, so include a random jar that won't get in the
way.

From the project's root directory...

Repeat these steps after each sync...

1) make (to produce generated .java source)
2) development/tools/idegen/idegen.sh
3) Import the project root directory into your Eclipse workspace. If you
already 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/").
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-05-05
你好。 IntelliJ IDEA 13已经不需要事先sbt gen-idea了,直接打开源码目录,IntelliJ会自动识别SBT项目并导入。不过我一般还是习惯先sbt gen-idea一下。 不是搞spark源码阅读的话,直接下载二进制吧,里边有spark-assembly-1.0.1-hadoop2.2.0.ja...本回答被网友采纳
第2个回答  推荐于2017-10-06
  一、修改Android Studio(以下简称AS)的内存配置

  因为在导入源码时需要消耗大量内存,所以先修改IDEA_HOME/bin/studio.vmoptions中-Xms和-Xmx的值。文档中使用的是748m, 可自行修改。

  二、配置AS的JDK、SDK

  在IDE中添加一个没有classpath的JDK, 这样可以确保使用源码里的库文件

  并将其作为要使用的SDK的Java SDK。

  三、生成导入AS所需配置文件(*.ipr)

  ①编译源码(为了确保生成了.java文件,如R.java;如果编译过,则无需再次编译)

  ②检查out/host/linux-x86/framework/目录下是否有idegen.jar

  如果idegen.jar不存在,执行:

  mmm development/tools/idegen/
  在5.0.1的源码中会生成res.java的文件夹,导致idegen.jar运行时抛FileNotFoundException,这是idegen的代码不够严谨造成的。

  我的分享里有修改这个bug的patch,或者直接使用我分享的idegen.jar。

  ③执行

  development/tools/idegen/idegen.sh
  等待出现类似下面的结果:

  Read excludes: 5ms
  Traversed tree: 44078ms
  这时会在源码的根目录下生成android.ipr和android.iml两个IntelliJ IDEA(AS是基于IntelliJ IDEA社区版开发的)的配置文件

怎样使用Intellij IDEA 开发 Android
从Eclipse项目导入您的项目的IntelliJ(如果你在Eclipse中创建的库这一步仅适用)。右键单击模块并选择打开模块设置。设置V7jar文件库设置图书馆V7的模块安装的应用程序模块的V7库模块依赖

如何使用IntelliJIDEA创建并运行Android程序?
1、首先打开IntelliJIDEA,进入IntelliJIDEA,找到createproject。2、命名工程,选择工程保存的位置。3、新手建议,选择EmptyActivity。4、Android编程以Activity为一个页面,这里创建安卓程序的第一个Activity,活动的名字和layout(页面布局)选择默认。熟悉Android编程后再更改。5、创建安卓程序成功后,进入的编程...

如何使用Android Studio开发\/调试Android源码
一、修改Android Studio(以下简称AS)的内存配置 因为在导入源码时需要消耗大量内存,所以先修改IDEA_HOME\/bin\/studio.vmoptions 中 -Xms 和 -Xmx 的值。 文档中使用的是 748m, 可自行修改。二、配置AS的JDK、SDK 在 IDE 中添加一个没有 classpath 的 JDK, 这样可以确保使用源码里的库文件 并...

如何用eclipse打开这种结构的android包
新建project后,新建module,就选择在当前目录吧,就是from scratch 然后把utilitize什么的一串去掉,然后下一步就行了。然后就可以看到在左侧project里出现了其他的文件夹信息。intellij 真是不好用啊。

android studio怎么用
Eclipse迁移到Android studio步骤如下:一、从Eclipse中导出:1、将ADT插件版本升级到22.0以上。2、在Eclipse中,选择File-->Export。3、在弹出的导出窗口中,打开Android的文件夹,选择“Generate Gradle Build Files”。4、选中想要导入到Android Studio中的项目,Finish。注意:导出的项目将会和原来的项目...

android studio 源码怎么导入
Read excludes: 21ms Traversed tree: 194799ms1212 通过如上操作我们就完成了基本的源码配置工作。2-2-2 导入Android Studio前的一些客户化操作 大家都知道使用Eclipse倒入源码很慢,Android Studio导入源码时也慢,所以建议修改android.iml文件(将自己不用的代码去掉),然后再导入Studio。

IntelliJ+IDEA用什么来管理Android+SDK?
打开“File”菜单,选择“Project Structure”选项。在左侧导航栏中选择“SDKs”选项。点击“+”按钮,选择“Android SDK”选项。在“Android SDK”窗口中,指定 Android SDK 的安装路径和 API 级别。点击“OK”按钮,完成 Android SDK 的设置。在完成以上步骤后,你就可以在 IntelliJ IDEA 中使用 ...

Android studio怎么设置自动导入需要的包
Android Studio 指的是:是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。那怎么设置自动导入需要的包,如以下几点:第一:强悍的Android studio 第二:选择File 下 的settings 第三:点击editor 第四:双击General 第五:选择...

android studio 怎么导入别的工程
新版Android Studio\/IntelliJ IDEA可以直接导入eclipse项目,不再推荐使用eclipse导出gradle的方式 2 启动Android Studio\/IntelliJ IDEA,选择 import project 3 选择eclipse 项目 4 选择 create project from existing sources或者 import project from external model 5 填写项目名字和存储路径 6 勾选需要导入的...

IntelliJ IDEA开发Android时如何导出签名APK~,求大侠赐教~
1、打开你的IDEA在导航栏中找到Build选择Generate Signed APK如下图 2、选取后出现下图,选择好你的keystore即可,如果没有可以创建一个新的

相似回答