Ubuntu12.04下eclipse调试anroid源代码

    按照官方文档会出现写错误,下面就介绍如何解决这些错误。

1. 提示 eclipse 没安装

===>

cp development/ide/eclipse/.classpath .

sudo apt-get install eclipse-platform


2. 建立eclipse工程

在eclipse3.7.2平台上有些不一样,选择File->New->Java project->进入下一步后添上项目名,去掉use default location的对钩,浏览选择你的android的主目录,这样项目就建成了,eclipse会自动编译。回报一些错误,下面一一讲解。

1> 报错:The field Enum<E>.ordinal is not visible.

 ===>

public final int compareTo(E o) {        return ordinal - o.ordinal;    }


修改为:

 public final int compareTo(E o) {        return ordinal - o.ordinal();    }

2>  报错mPrev:

===>将成员声明为public,这是我的法子,可能会有更好的:)

    public LinkedNode mPrev;

    public LinkedNode mNext;


3> 报有关库的错:

===>

删除.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"/>

也可以右击项目目录,选择Properties,左侧栏选择Java Build Path,右边选择libraries,添加相关的lib,我修改过的列一下:

classes-jarjar.jar   /home/t/WORKING_DIRECTORY/out/target/common/obj/JAVA_LIBRARIES/android-support-v13_intermediates

classes-jarjar.jar   /home/t/WORKING_DIRECTORY/out/target/common/obj/JAVA_LIBRARIES/filterfw_intermediates

javalib.jar             /android/out/target/common/obj/JAVA_LIBRARIES/android-support-v4_intermediates

javalib.jar             /home/t/WORKING_DIRECTORY/out/target/common/obj/JAVA_LIBRARIES/android-common_intermediates

此处还可以参考如何使用Eclipse开发Android源码,这个帖子确实不错。


4>基本这样eclipse就只剩下warning了,注意:这个东西运行是出不来模拟器的,刚开始我还以为和windows上的一样能出模拟器呢,惭愧!


3. ddms的使用

    在使用ddms时回报一些莫名奇妙的异常错误,那是因为你设置的ANDROID_SWT不对导致的。下面贴出我的错误以及改正的办法。

t@t-ThinkPad-T420:~/WORKING_DIRECTORY/out/host/linux-x86/bin$ ./ddms10:35:04 E/ddms: shutting down due to uncaught exception
10:35:04 E/ddms: org/eclipse/swt/graphics/FontData
java.lang.NoClassDefFoundError: org/eclipse/swt/graphics/FontData
    at com.android.ddms.PrefsDialog.setDefaults(PrefsDialog.java:221)
    at com.android.ddms.PrefsDialog.init(PrefsDialog.java:150)
    at com.android.ddms.Main.main(Main.java:73)
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.graphics.FontData
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 3 more


===>

    进入目录:android root/out/host/linux-x86/bin,

   执行:export ANDROID_SWT='/home/t/WORKING_DIRECTORY/prebuilt/linux-x86_64/swt'

界面出来就说明你成功了,如果还出来说明ANDROID_SWT的路径不对,你可以上网查查,也可以搜索出所有ddms文件的目录试试。

   运行:./ddms

我当时运行ddms始终报什么异常,换了多个目录都不行,最后到是上面这个目录,设置好后果然界面出来了!高兴!!!


4. 下面就连调吧(前提是按照android文档都编译完成没有错误)

1>打开终端,进入android主目录,执行:

. build/envsetup.sh #设了环境变量之后,会多出mmm等命令,可以通过输入help来查看
lunch 1   # 把emulator等工具和ramdisk.img等文件的路径对应起来,就可以直接调用emulator等工具,也解决了第3个问题
emulator &

2> 启动ddms

按照3做就行。

在ddms中进程列表中选择一个进程,我选择的是com.android.calendar,察看下进程号是8708.

3>启动eclipse

在eclipse中配置调试类型和端口:
在Run->Debug Configurations->Remote java application上双击,然后,”Host:”设为localhost,”Port:”设为8708,”Connection Type”为Standard(Socket Attach)

选择Apply,Debug。

我在CalendarViewAdapter.java 文件的public CalendarViewAdapter(Context context, int viewType)打上了断点,就可以断住了。

如果出现

Failed to connect to remote VM. Connection refused.
拒绝连接

这样的错误,就需要重新启动下ddms和eclipse了。要先启动ddms,后启动eclipse。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值