如何使用eclipse和emulator debug Android source code(JNI以上部分)

这个文档主要说明了如何debug我们的JNI以上的java code部分,包括App Framework以及Application部分。

1.首先建立Android的编译环境,并且将android的source code repo下来。然后对源码进行make。安装eclipse以及eclipse的android plus-in。具体安装方法在这里就不多说了。

2.将out/target/product/generic目录下的system.img,userdata.img,ramdisk.img拷贝到目 前eclipse使用的SDK目录下的tools/lib/images下,SDK中的这三个img,最好做一个备份。

3.eclipse需要一个目录以保证它能够找到路径下面的java文件,就是所谓的“java build path”,在android的source code已经给我们准备了一个叫“.classpath”的文件,我们可以直接利用这个文件,也可以对这个文件进行相应的修改。这个文件在source code的位置为:development/ide/eclipse/.classpath。将这个文件cp到android sorce code的根目录下。拷贝后,需要对.classpath文件的属性进行修改,以保证这个文件的可以修改。chmod u+w .classpath

4.Android Project比较大,Eclipse的java Vm在编译的时候可能会有内存不够的情况,我们需要编辑elipse.ini文件,这个ini文件就在eclipse文件夹下,将其修改为:
        -Xms128m
        -Xmx512m
第一个表示eclipse最小的java栈是128m,第二个表示eclipse的最大栈是512m
   
5.如何根据源代码建立android source code的工程。打开eclipse
(1)File->New->Java Project,注意这个与Android的Application的建立是不一样的,这个不是一个Android Project而是建立的Java Project
(2)随便选择一个工程名,这里我们取名叫Android
(3)然后选择“Create project from existing source”,然后Android source code的目录,完成。]
(4)然后就是等待工程的建立,这个需要一会,工程比较多,这个工程的建立就是根据我们.classpath中的内容完成的。
代码导入后,没有error,但是有很多的warning,但是这个不影响我们debug。

关于.classpath的说明:这里我们演示的是如何用eclipse debug源代码中的一个Helloworld的应用,在.classpath中我们相应的添加上<classpathentry kind="src" path="packages/apps/Helloworld/src"/>这样在工程生成的时候,我们就可以在eclipse的java code部分看到我们在source code里面添加的这个Helloworld的应用了。其他的添加也是相同的方法。


6.如何debug,在SDK的tools下启动./emulator,这个时候emulator启动运行的加载的就是我们通过source code编译出来的img。然后启动./ddms,ddms默认使用的是端口8700。ddms启动起来就可以看到emulator中的活动等消息。
Eclipse关于debug的一些设置,Run->Debug Configurations->Remote Java Application,鼠标右键->随意选择一个名字,设置Project为你目前的 Project,Standard,localhost,8700->Debug。如下图所示:
tu1.png

7.如何debug,这里我们需要debug的是实验的小程序Helloworld,在eclipse里面给在需要的地方加上断点,如图所示:
tu2.png


断点添加好以后,在ddms里面选中我们需要debug的进程,如图所示:
tu3.png

然后运行emulator中的Helloworld的应用,这样我可以在eclipse里面进行我们的debug工作了。如下图所示:
tu4.png

这样我们就可以基于我们的源代码,使用eclipse debug我们JNI上面的代码了。

补充1:
如果代码repo sync过,我们这样作:
(1).Window > Show View > Navigator
(2).在project名字上右键
(3).refresh,然后新添加删除的东西就会在eclipse的工程进行了一个同步。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章