1.3 开发环境搭建
我们可以使用 Android 来做很多事情,这一节主要介绍在使用源码编译出来的 SDK 的基础上搭建应用开发环境和源码开发环境。
1.3.1 应用开发环境搭建
由于Android源码开发环境的搭建需要在应用开发环境的基础上进行,所以这里先介绍如何在Linux(ubuntn)下搭建应用开发环境,在Windows和Mac系统下的操作步骤也基本一致。
在Linux(ubuntn)下搭建应用开发环境时所需工具如下:
❑ Eclipse 3.4以上版本
❑ ADT
❑ Android SDK(Linux 版本)
ADT和SDK可以使用上一节我们自己编译出来的,也可以到其官方网站下载。准备好所需工具之后,按下面的步骤来搭建Android应用开发环境。
(1)安装Eclipse
下载Eclipse(你也可以使用之前编译ADT时使用的Eclipse,为了避免混淆,笔者重新使用一个Eclipse来开发应用程序),下载后解压到指定目录,按提示操作即可完成安装。然后启动Eclipse,指定工作空间,进入Eclipse工作窗口。
(2)安装ADT插件
运行Eclipse,进入“help->Install new software”菜单并选择ADD,将会弹出一个对话框,单击“ADD”按钮。为了取得最新的ADT(我们编译的源码可能并不是Android 所发布的最新源码,所以编译的ADT也就不是最新的,同样也可以使用我们自己编译的ADT),我们选择在线更新,输入“http://dl-ssl.google.com/Android/eclipse”,单击“OK”按钮,如图1-32所示。
图1-32 安装ADT插件
更新完成后,选择要安装的软件,单击“Next”按钮,然后选择“接受协议”,直到安装成功。Eclipse会建议你重启,单击“Yes”重启即可。
(3)配置Android
重启Eclipse后,设置Android SDK,进入“Window->preferences”菜单,在SDK location中输入Android SDK tools的路径,可以使用自己编译的SDK,也可以使用官方网站下载的SDK。这里我们选择了自己编译的SDK,因为后期在修改和移植源码时可能需要测试,如图1-33所示,完成之后单击“OK”按钮。
图1-33 指定SDK tools路径
(4)测试环境
现在该我们的“Hello World”出场了,程序虽然简单,但这是使用我们自己编译的 SDK编写的,所以测试是需要的(笔者第一次编译之后就没有成功,原因是直接使用了 make sdk命令,结果新建的工程不能生成R.java文件,出现“Unable to get buffer of resource asset file”错误)。这里建议大家新建一个工程进行测试,新建的工程结构如图1-34所示, Android2.3-updata1则是我们刚刚编译的。
图1-34 Hello World的项目结构
现在来运行“Hello World”程序,在配置时所选择的模拟器AVD也就是我们自己创建的Eyarin正确运行,效果如图1-35所示。
图1-35 Hello World的效果及配置
到此,就完成了使用我们自己编译的 SDK 来搭建应用开发环境的工作,也说明我们之前所编译的内容都没有错误。如果你没有到达这一步,请仔细按照前面的步骤检查,找出错误的原因,最终会走到这里的。
1.3.2 源码开发环境搭建
前面我们使用了Eclipse和ADT来开发Android应用程序,这是Google官方推荐的方式。因为Android的Eclipse插件ADT提供了很多功能,我们可以在Eclipse上轻松地开发和调试Android 应用程序,大家逐渐也会体会到这种方式的优点。下面我们来搭建 Android 源码开发环境,这又该使用什么编辑器呢?有很多人在Linux下使用类似Windows记事本的简单文件编辑器来编写代码,对于新手而言,这样可能会严重影响效率。由于我们可能比较熟悉 Eclipse开发工具,所以还是将源码的开发环境也搭建到 Eclipse 上。当然,在 Linux 下还有很多优秀的编辑工具,大家可以根据自己的喜好来选择,这里我们就以Eclipse为例来搭建一个Android源码开发环境。
开始之前需要说明:我们不推荐用Eclipse来编译Android源码,所以编译源码的任务还是在我们的终端来完成。我们的目的是能够使用 Eclipse 来方便地编写和管理代码以及进行必要的调试。如果按照以下步骤来操作,我们就能使用Eclipse来开发Android源码了。
1.将Eclipse工程配置文件复制到Android源码根目录
Android源码中为我们提供了Eclipse配置文件(可见Google官方还是推荐使用Eclipse来开发Android源码),它位于存放Android源码目录下的“development/ide/eclipse/.classpath”路径下,我们将其复制到 Android 源码的根目录中(笔者的机器对应的目录为“/home/yarin/Android/source”)。
2.修改Eclipse程序的配置
Eclipse程序的配置主要有3个方面需要修改,如下所示。
(1)修改Eclipse的缓存设置
把eclipse.ini文件(在Eclipse的安装目录下)的3个值改为下面的值,对应如图1-36所示(建议修改前进行备份)。
图1-36 修改eclipse.ini文件
-Xms128m - Xmx512m -XX:MaxPermSize=256m
(2)把android-formatting.xml和android.importorder导入Eclipse
android-formatting.xml、.classpath 和 android.importorder 文件被存放在 Android 目录的“development/ide/eclipse/”下,其中android-formatting.xml用来配置Eclipse编辑器的代码风格, android.importorder用来配置Eclipse 的导入顺序和结构。
首先导入android-formatting.xml,依次在Eclipse中选择“window->preferences-> Java->Code Style->Formatter”即可,如图1-37所示。
图1-37 导入android-formatting.xml文件
然后导入 android.importorder 文件,依次在 Eclipse 中选择“window->preferences->Java->Code Style->Organize Imports”即可,如图1-38所示。
图1-38 导入android.importorder文件
导入完成之后保存。由于我们需要编辑Java和C语言以及其他语言代码,因此这里为大家推荐一款Eclipse插件anyedit,可以很方便地帮我们管理和维护Android源码工程,请参考其官方网站http://andrei.gmxhome.de/anyedit/进行安装和设置。
(3)将Android源码导入Eclipse中
导入过程很可能会破坏Android源码,虽然我们每一步都进行了细心的测试,但是难免出现我们都不想见到的情况。因此,笔者建议导入前对Android源码进行备份,以防万一。导入源码的操作很简单,但是导入前先检查.classpath里的文件在Android源码中是否有相应的文件(文件夹),否则会破坏Android源码(一般是多添加文件/文件夹),.classpath里多余的路径可删除,然后开始导入。
新建Java Project(不是Android Project,否则会破坏Android源码),选择从已存在的工程导入,工程名可随机输入(这里我们设为android_src),如图1-39所示。
图1-39 将Android源码导入Eclipse
单击“Next”按钮,开时导入;之后单击“Finish”按钮,完成导入。此时,Eclipse会build整个工程(速度比较慢,请耐心等待)。导入完成之后一般不会出现错误,工程结构如图1-40所示,其中包括了所有 Android 源码的目录(这里的截图没有显示完整),这样就方便我们阅读和编辑源码了。
图1-40 Android源码被导入Eclipse之后的结构
(4)调试Android程序
要调试程序,首先需要运行模拟器,打开DDMS窗口。先从终端进入Android源码目录,可以通过如下命令来完成,完整命令运行后如图1-41所示。
图1-41 启动调试工具命令
. build/envsetup.sh lunch 1 emulator & ddms &
注意 第一条命令的“.”后面有一个空格。
运行完第二条命令就应该启动一个模拟器了,模拟器启动完成后执行第三条命令,将得到一个用于调试的DDMS窗口(速度慢,稍等片刻),如图1-42所示。
图1-42 DDMS窗口
然后,需要在 Eclipse 中配置调试类型和端口。依次进入“Run->Debug Configurations->Remote Java Application”菜单选项,在弹出的Debug Configurations窗口中进行相关设置,如图1-43所示。单击“Apply”按钮,完成配置,再点击“Debug”按钮,开始调试,同样支持断点不调试,很方便吧。
图1-43 调试工程配置
注意 如果单击“Debug”按钮后出错,显示8700端口被占用,那么只需要把DDMS程序关掉并重新打开即可。如果提供连不到VM错误时,要先在DDMS中(图1-42所示)选中某一进程(对应某一应用程序),这样才能在Eclipse中进行调试。如果你不太明白,不要紧,后面我们在调试实际程序时还会继续讲解。
(5)编译Android程序
像前面这样将源码导入Eclipse,不能在Eclipse中编译程序,因此我们需要在Android源码目录中执行如下命令,然后根据提示编译不同的程序。详情大家可以参考 1.2.3 节关于单独模块编译的内容。
. build/envsetup.sh
关于编译,我们还可以直接在 Android 源码根目录下执行“make 模块名”命令来编译模块,具体的操作在后面的章节会详细介绍。
关于开发环境的搭建就介绍到这里,下一节将对Android源码及其应用开发所需要使用的SDK进行整体性的介绍,不要错过哦!