简介
【本文章转自https://blog.youkuaiyun.com/QQxiaoqiang1573/article/details/72903237】
由于怕博文丢失就拷一份过来,很实用
偶然发现一个神器idegen,通过它我们可以用Android Studio阅读整个系统源码,非常方便。话不多说直接来看怎么使用idegen,导入系统源码到Android Studio。
见证奇迹的时候
Windows环境下,将整个Android系统源码导入到Android Studio中。
首先,我们要做的就是在源码环境下,即Linux环境下,执行以下命令:
-
$ source build/envsetup.sh -
$ lunch aosp_x86-eng #(or pick your favorite lunch target) -
$ make -
$ mmm development/tools/idegen/ -
$ development/tools/idegen/idegen.sh
注:上面的编译命令以实际的系统编译命令为准
依次执行完上面的命令,就会在系统根目录下生成如下文件
-
.classpath (Eclipse) -
android.ipr (IntelliJ / Android Studio) -
android.iml (IntelliJ / Android Studio)
因为我这用的是Android Studio导入源码,所以我们只需要选择android.ipr这个文件即可。同时,在development/tools/idegen/目录下有个README文件,我们来看下其中的内容。
development/tools/idegen/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/").
上面的文档介绍了IntelliJ和eclipse怎么导入系统源码的方法,这里我们就只使用Android Studio来导入源码。所以就不管eclipse部分的东西了。因为Android Studio的前身就是IntelliJ,所以Android Stduio的导入方法和IntelliJ是一样的。
在执行完上面Linux系统部分的编译工作后,我们就可以回到Windows环境了,来看看我们怎么用Android Studio导入系统源码。
第一步:
找到Android Studio的安装路径中的vmoptions文件并打开:”Android Studio Path”/bin/studio.exe.vmoptions或者studio64.exe.vmoptions
添加
-
-Xms748m -
-Xmx748m
- 1
- 2
到其文件中。 
第二步:
打开Android Studio,选择File->Open
弹出路径选择框,输入相应的源码根路径,然后选择android.ipr文件,就开始导入源码啦。在导入过程中,需要等待索引的建立相关的关联,大概需要花10~20分钟。 

第三步:
当我们导入完源码后,我们就可以查看整个系统的源码啦,但是我们在跳转公共的类时,并没有跳转到frameworks目录下对应的源码类,而是jar包中的类,这不是我们想要的,我们需要让其跳转到相应的类中。我们就需要新建一个没有任何jar库的SDK给到系统源码项目的依赖。
那我们要怎么创建一个没有jar的SDK呢?步骤如下:
右键项目名->Open Module Settings->Project->New(JDK)
然后选择SDKs->编辑刚刚添加的jdk->删除Classpath目录下的所有包并命名为1.6(No Libraries)
再选择Modules->Module SDK选择刚刚编辑的SDK(1.6(No Libraries)),并删除下面所有的包。
大功告成,完成上面的步骤后,公共的类就直接指向系统的源码啦。 






本文详细介绍了如何使用idegen工具将整个Android系统源码导入到AndroidStudio中,包括在Linux环境下进行必要的编译配置,以及在Windows环境下修改AndroidStudio设置以适配大内存需求和创建无库SDK的方法。
2万+

被折叠的 条评论
为什么被折叠?



