Mac OS X 下用 Eclipse 浏览和编译 Android 源代码
LEOPARD_SDK:= /Developer/SDKs/MacOSX10.6.sdk,即可通过编译。
初始化编译环境:
$source build/envsetup.sh
2)选择编译目标
$lunch full-eng
3)开始编译代码
$make
如果运气好的话,你可以看到最终成功的提示,goodluck!
四.将源代码导入Eclipse
1.拷贝.classpath
进入gingerbread源代码目录,也就是上面的android_gingerbread_src。
$cd android_gingerbread_src
$cp ./development/ide/eclipse/.classpath ./
将.classpath设置为可写
$chmod +w .classpath
2.新建Eclipse工程
运行Eclipse,选择File->New->Java Project,项目位置就选择android_gingerbread_src根目录,导入成功以后,Eclipse开始编译源代码,不过会报告两个错误,如下:
Project'gingerbread' is missing required library:'out/target/common/obj/JAVA_LIBRARIES/google-common_intermediates/javalib.jar'
Project'gingerbread' is missing required library:'out/target/common/obj/JAVA_LIBRARIES/gsf-client_intermediates/javalib.jar'
删除.classpath中的这两行路径:
添加
然后重启Eclipse,即可解决。
五.利用Eclipse调试gingerbread代码
通过对gingerbread源代码的调试,我们可以更为清晰的了解Android的内部工作机制,也可以省却大量的阅读代码的时间,提高学习效率。
如果要想通过Eclipse来调试gingerbread代码,我们必须首先能够成功通过编译,编译以后,会生成几个系统文件,其中包括system.img,userdata.img和ramdisk.img,三个文件位于源码目录下的out/target/product/generic子目录下,如果熟悉Android系统开发的朋友应该知道,一个完整的Android映像应该还包括一个叫kernel-qemu的文件,这就是Linux内核镜像,不过我们并没有编译内核,所以这里没有生成这个文件。
要想成功调试,我们还需要安装androidsdk,网上此类文章很多,这里就不多说了。将上述三个文件拷贝到/path-androidsdk/platforms/android-10/images目录下,替换该目录下的三个同名文件(由于gingerbread代码版本是2.3.3,这个版本对应的就是android—10,一定不要搞错了)。
![](http://m.amcfsurvey.com/editerupload/fetch/20160912/305420_2_0.jpg)
创建一个新的avd虚拟设备,Target选择Android2.3.3,如图,并启动模拟器。
![](http://m.amcfsurvey.com/editerupload/fetch/20160912/305420_2_1.jpg)
我们可以看出,Android的版本是2.3.5,Build number是full-eng 2.3.5 GINGERBREAD eng,编译时间是2011.10.15日。确实是我们自己编译的镜像。
启动Eclipse,选择gingerbread源码工程后,选择Run->Debug Configurations,在左边列表中选择“Remote Java Application”,并创建一个新的项目gingerbread,将端口(Port)设置为8700,其它保持缺省,如图所示:
![](http://m.amcfsurvey.com/editerupload/fetch/20160912/305420_2_2.jpg)
在eclipse中,选择DDMS视图,并选中你要调试的进程,如图:
![](http://m.amcfsurvey.com/editerupload/fetch/20160912/305420_2_3.jpg)
回到上面的Remote Java Application界面,点击“Debug”按钮来启动调试,此时再打开DDMS视图,可以看到我们要调试的进程显示一个绿色的小图标:
![](http://m.amcfsurvey.com/editerupload/fetch/20160912/305420_2_4.jpg)
你可以在eclipse中下断点开始调试了。
评论