使用Eclispe进行Android系统应用的开发和调试
准备好自己的源码并顺利编译通过,现在开始进一步开发啦^^。还没准备好的,可以参阅我上一篇《ubuntu 11.10下载和编译Android源码》。
以下的内容就直接延续我上篇的环境目录,不做特殊说明了。
一、阅读文档
Using Eclipse:http://source.android.com/source/using-eclipse.html。
步骤其实讲述的很清楚了,但在自己的环境下难免不遇到一点问题。
二、准备环境
1)修改Java环境变量
好吧,只能说之前配置的不合规范了。至于之后会引起什么问题,也会提到的,算是给别人的参考吧(安慰下自己T^T)。
1. sudo gedit /etc/profile(在这配置Java环境变量)
添加内容:
JAVA_HOME=/usr/lib/jvm/java/jdk1.6.0_29
export JRE_HOME=/usr/lib/jvm/java/jre1.6.0_29
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
2. sudo gedit /etc/environment(把之前的改回来,再重启==)
修改前:
PATH="......:$JAVA_HOME/bin"(......为原PATH)
CLASSPATH=".:$JAVA_HOME/lib"
JAVA_HOME="/usr/lib/jvm/java/jdk1.6.0_29"
修改后:
PATH="......"(......为原PATH)
2)进入源码目录
join@join-Vostro-230:~$ cd ~/env/android_src/4.0.3_r1/
3)copy .classpath
join@join-Vostro-230:~/env/android_src/4.0.3_r1$ cp development/ide/eclipse/.classpath .
join@join-Vostro-230:~/env/android_src/4.0.3_r1$ chmod u+w .classpath
4)修改Eclipse缓存
join@join-Vostro-230:~/env/android_src/4.0.3_r1$ cd ~/env/eclipse/
join@join-Vostro-230:~/env/eclipse$ gedit eclipse.ini
将
-XX:MaxPermSize=256m
-Xms40m
-Xmx512m
修改为
-XX:MaxPermSize=256m
-Xms128m
-Xmx512m
5)建立Eclipse工程
join@join-Vostro-230:~/env/eclipse$ ./eclipse
New->Java Project
Project name: 4.0.3_r1
Use default location: 去除钩选
Location->Browse...: /home/join/env/android_src/4.0.3_r1
等待一会...
bingo,工程建立好了^^。
1、Eclispe建立Java工程时,注意是“Create project from existing source”。官方文档说要选择这个,我建时没这选项直接选路径就ok了,可能是不同版本Eclispe的原因吧==。
2、红色叉叉、警告什么的先不管,这不影响模块编译。或者先往下看调试部分的内容,把这先解决^^。
6)增加Eclispe模版
模版在‘源码目录/development/ide/eclipse’下,android-formatting.xml&android.importorder文件。(.classpath也是在这目录下的,Ctrl+H显示隐藏文件即可看到^^)
1)Select Window > Preferences > Java > Code Style.
2)Use Formatter > Import to import android-formatting.xml.
3)Organize Imports > Import to import android.importorder.
三、修改应用,局部编译
1)修改&编译
1)找到packages/apps/Launcher2/src,右键Go Into,在上方有个左右箭头可以来回切换。这样之后,方便查看代码。
2)在Launcher.java的onCreate(...)里加个自己的Log,如“Log.e("Join", "Hello, I'm Join!");”。
3)编译Launcher2:
Ctrl+Alt+T(新开一个终端)
gedit ~/.bashrc(编辑.bashrc)
添加“source ~/env/android_src/4.0.3_r1/build/envsetup.sh”,免去每次启动新的终端执行mm等命令之前,需要引用此文件。
cd ~/env/android_src/4.0.3_r1/(进入源码目录)
. build/envsetup.sh(准备好环境,这次还是要的)
mmm packages/apps/Launcher2/(编译Launcher2模块,或者直接make Launcher2)
make snod(重新生成system.img,如果只是为了修APP就没必要了)
1、在编译Launcher2模块时,你应该可以看到新APP的生成。
2、重新生成个img吧,之后我们还要看下打的日志呢^^。
3、之前说的Java环境变量,如果还是原配置的话在make snod时会有问题。
错误:“/bin/bash: jar: 未找到命令”
补充:java -version版本没问题,javac也还能找到,但jar就是不行。也试过了“sudo ln -s -f /usr/lib/jvm/java/jdk1.6.0_29/bin/jar”来链接,至少我这无效T^T。
4、android模块编译相关命令:http://www.cnblogs.com/bobystudy/articles/1770193.html
2)确认日志
Ctrl+Alt+T(新开一个终端)
cd ~/env/android_src/4.0.3_r1/(进入源码目录)
lunch 1(创建模拟器)
emulator(打开模拟器)
cd ~/env/eclipse/(进入Eclispe目录,新开终端或原先的)
./eclipse(打开Eclispe,还开着的忽视==)
在DDMS中选择emulator,过滤看看是否有你之前打的Log,如“Join”^^。
1、Eclispe安装了ADT组件的话,可以直接看它的。如果没的话,就另外打开吧。
Ctrl+Alt+T(新开一个终端)
cd ~/env/android_src/4.0.3_r1/(进入源码目录)
ddms(开启DDMS)
四、调试源码
1)2.3.3_r1源码的调试
cd ~/env/eclipse/(进入Eclispe目录)
./eclipse(打开Eclispe)
修正lib包错误,右键工程->Properties->左侧选Java Build Path->右侧选Libraries标签->选中两红叉的lib,Remove掉->Add JARs...->增加“out/target/common/obj/JAVA_LIBRARIES/android-common_intermediates/javalib.jar”。
Ctrl+Alt+T(新开一个终端)
cd ~/env/android_src/4.0.3_r1/(进入源码目录)
lunch 1(创建模拟器)
emulator(打开模拟器)
在emulator中进入settings,在Eclipse的DDMS里,选中新增加的com.android.settings进程。注意进程名称一行最后一项多了个/8700,即是之后设置的Port。
返回工程界面,找到“packages/apps/Settings/src”打开“com.android.settings”包内的“WirelessSettings.java”类,在onCreate()方法内打个断点。
右键工程->Debug As->Debug Configurations->左侧栏双击Remote Java Application->修改右侧栏Connect标签下配置,Connection Type: Standard(Socket Attach),Connection Properties: Host,localhost; Port,8700->将Common标签下的Debug打钩->继而“Apply”、“Debug”
回到emulator,选择Wireless&networks。OK,开始Debug吧^^。
2)4.0.3_r1源码的调试
cd ~/env/eclipse/(进入Eclispe目录)
./eclipse &(打开Eclispe,后台)
修正lib包错误,右键工程->Properties->左侧选Java Build Path->右侧选Libraries标签->选中两红叉的lib,Remove掉->Add JARs...->增加“out/target/common/obj/JAVA_LIBRARIES/android-common_intermediates/javalib.jar”、“out/target/common/obj/JAVA_LIBRARIES/filterfw_intermediates/classes-jarjar.jar”、“out/target/common/obj/JAVA_LIBRARIES/android-support-v13_intermediates/classes-jarjar.jar”。
cd ~/env/android_src/4.0.3_r1/(进入源码目录)
lunch 1(创建模拟器)
emulator(打开模拟器)
在Eclipse工程界面,找到“packages/apps/Launcher2/src”打开“com.android.launcher2”包内的“Launcher.java”类,在onKeyDown()方法内打个断点。继而在DDMS中,选中“com.android.launcher”进程。注意进程名称一行最后一项多了个/8700,即是之后设置的Port。
进行Debug设置,右键工程->Debug As->Debug Configurations->左侧栏双击Remote Java Application->修改右侧栏Connect标签下配置,Connection Type: Standard(Socket Attach),Connection Properties: Host,localhost; Port,8700->将Common标签下的Debug打钩->继而“Apply”、“Debug”
回到emulator,点击返回键。OK,开始Debug吧^^。
五、后记
玩的开心^^
本文转自winorlose2000 51CTO博客,原文链接:http://blog.51cto.com/vaero/799473,如需转载请自行联系原作者