按照官方文档会出现写错误,下面就介绍如何解决这些错误。
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 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。