说明: 本文档导入android源码是在指在android源码编译环境下进行,不同于android+adt 的环境下的android项目的导入。
1.复制 源码目录/development/ide/eclipse目录下的工程配置文件到android 源码根目录下
cd android cp development/ide/eclipse/.classpath ./ chmod u+w .classpath
2. 源码量较大需增大eclipse内存、缓存设置,找到eclipse安装目录下的eclipse.ini 修改内存配置
-Xms128m -Xmx512m -XX:MaxPermSize=256m
3. 导入android源码
-
选择File→New→Java Project
-
选择Create project from existing source . 选择 android 源码根目录(eclipse较高版本上没有这一项,将“Use default location”的勾去掉,选择location即可)
-
点击 Finish 按钮 (源码量较大初始化需等待一会儿)
4. 问题补充
在ubuntu 10.10下的eclipse导入android 2.2源码,遇到新问题: 缺少out/target/common/obj/JAVA_LIBRARIES/google-common_intermediates/javalib.jar 和out/target/common/obj/JAVA_LIBRARIES/gsf-client_intermediates/javalib.jar 解决方法如下:
gedit .classpath
删除下面两行 <classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/google-common_intermediates/javalib.jar"/> <classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/gsf-client_intermediates/javalib.jar"/> 添加 <classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/android-common_intermediates/javalib.jar"/>
问题2
再执行上面(3. 导入android源码)后,发现packages/providers/CalendarProvider/src和packages/providers/ContactsProvider/src还有错误解决办法1
展开packages/providers/CalendarProvider/src 展开包: com.android.providers.calendar 右键点击包com.android.providers.calendar 选择 "new file" 在对话框中选择点击 "Advanced >>" 按钮, 可以看到"Link to file in the file system" checkbox 勾选上 checkbox. 这时 "Browse..." 可用 ---> 点击 "Browse..." 按钮,选择EventLogTags.java (e.g.,out/target/common/obj/APPS/CalendarProvider_intermediates/src/src/com/android/providers/calendar/EventLogTags.java) 点击 Finish (in "New File") 同样的方式修改com.android.providers.contacts的问题即可解决办法2
修改.project 文件 将其中的link标签中的location标签内的地址修改为自己的地址就可以了 <?xml version=“1.0” encoding=“UTF-8”?> <projectDescription>
<name>android</name> <comment></comment> <projects> </projects> <buildSpec> <buildCommand> <name>org.eclipse.jdt.core.javabuilder</name> <arguments> </arguments> </buildCommand> </buildSpec> <natures> <nature>org.eclipse.jdt.core.javanature</nature> </natures> <linkedResources> <link> <name>packages/providers/CalendarProvider/src/com/android/providers/calendar/EventLogTags.java</name> <type>1</type> <location>/home/lijunjie/android/out/target/common/obj/APPS/CalendarProvider_intermediates/src/src/com/android/providers/calendar/EventLogTags.java</location> </link> <link> <name>packages/providers/ContactsProvider/src/com/android/providers/contacts/EventLogTags.java</name> <type>1</type> <location>/home/lijunjie/android/out/target/common/obj/APPS/ContactsProvider_intermediates/src/src/com/android/providers/contacts/EventLogTags.java</location> </link> </linkedResources></projectDescription>
问题3 Cannot find the class file for java.lang.Enum
需要给工程添加jdk问题4 工程中很多类文件用到类无法导入添加相应的jar包,一般都在/out/target/common下
问题5 缺少FragementCompatICS文件解决方法和问题2的解决方法一一样