如何用 Intellij 导入 Android 源码?

如何用 Intellij 导入 Android 源码?,第1张

针对定制源码或者原生源码来说,这些准备步骤都是必须的,没必要再强调了。

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/").

打开idea软件,在欢迎页面可以看到Import Project导入项目,但spring源码已经使用了gradle构建项目,这里我们选择open的方式直接打开spring源码目录,gradle会自动帮助我们导入和构件项目代码

点击open方式,会出现Open File or Project对话框让我们选择需要打开的源码的项目目录

选择打开之后,会显示Import Project from Gradle对话框,默认会指定好项目根目录的build.gradle文件,如果需要可以选择修改,下面可以指定gradle的home目录信息

选择完成之后,点击ok,然后会显示"Build 'spring-framework' Gradle project info",此时gradle在构件spring项目代码,会从远程库下载依赖的jar文件,由于下载的依赖文件较多,需要等待时间较长

项目代码构件完成之后,会显示"Gradle Project Data To Import"对话框,会显示spring项目中所有包含的模块项目,可以把不需要的模块去除勾选,默认导入全部即可

点击ok之后,idea项目目录显示所有spring模块目录,选择打开指定模块源码,可以按需要阅读代码,也可以进入test目录,结合单元测试代码来阅读和测试代码

打开IntelliJ IDEA 后,在菜单栏中选择 VCS→Check out from Version Control→Git,之后在 Git Repository URL 中填入 Spark 项目的地址,并指定好本地路径,如下图所示。

点击该窗口中的的 Clone 后,开始从 Github 中 clone 该项目,该过程试你网速而定,大概需要3-10分钟。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7964141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存