第一章Android开发环境1.1下载android源码安装相关工具sudoapt-getinstallcurlgnupgflexbisongperflibsdl-devlibesd0-devlibwxgtk2.6-devbuild-essentialziplibncurses5-devzlib1g-dev如果需要检测内存泄露、堆栈破坏、数组溢出,可安装valgrindsudoapt-getinstallvalgrind创建目录创建并切换到android工作目录mkdir~/androidcd~/android创建bin目录、分支目录、主线目录mkdir~/android/binmkdir~/android/froyomkdir~/android/master安装配置repo下载repo,设置可执行属性:cdbincurl修改repo脚本,使用http协议替代git协议:geditrepoREPO_URL='git://android.git.kernel.org/tools/repo.git'修改为:REPO_URL='创建分支源代码库:cd../froyo../bin/repoinit-u创建master主线源代码库,则无须-b选项:cd../master../bin/repoinit-u初始化过程中,提示配置git帐户,回车默认即可。YourName[xxx]:↙YourEmail[xxx@xxx.(none)]:↙Youridentityis:xxxxxx@xxx.(none)Isthiscorrect[y/n]?y↙但前目录下应该有隐藏目录.repo,修改配置文件,使用http协议替代git协议geditfroyo/.repo/manifests/default.xml将fetch=git://android.git.kernel.org/改为fetch=下载源代码,大约耗时8小时39分../bin/reposync1.2搭建开发环境安装配置JavaFroyo标准分支需要Java5,因为新版本的ubuntu中没有java5安装文件,需要修改apt源,使用ubuntu9.10源安装的java5sudocp/etc/apt/sources.list/etc/apt/sources.list_backupsudogedit/etc/apt/sources.list添加如下源的配置deb://run.hit.edu.cn/ubuntu/jauntymainrestricteduniversemultiversedeb://run.hit.edu.cn/ubuntu/jaunty-updatesmainrestricteduniversemultiversedeb://run.hit.edu.cn/ubuntu/jaunty-backportsmainrestricteduniversemultiversedeb://run.hit.edu.cn/ubuntu/jaunty-securitymainrestricteduniversemultiverse安装Java5sudoapt-getupdatesudoapt-getinstallsun-java5-jdksudocp/etc/apt/sources.list_backup/etc/apt/sources.list最新的主线代码需要使用Java6sudoapt-getupdatesudoapt-getinstallsun-java6-jdk如果同时安装了Jvav5和Java6,可以配置指定要使用的Java版本sudoupdate-alternatives--configjava(slectedjava1.6)sudoupdate-alternatives--configjavacsudoupdate-alternatives--configjar如果编译doc出现问题,可以设置Java6使用Java5的文档组件cd/etc/alternativessudomvjavadoc.1.gzjavadoc.1_bak.gzsudoln-s/usr/lib/jvm/java-1.5.0-sun/man/man1/javadoc.1.gzjavadoc.1.gzsudomvjavadocjavadoc_baksudoln-s/usr/lib/jvm/java-1.5.0-sun/bin/javadocjavadoc安装配置Eclipse3.6.0可以在Eclipse官方网站上下载安装包,也可以使用服务器上已经下载的安装包:smb://ia-sz/product/android/eclipse-SDK-3.6-linux-get.tar.gz解压到主目录的eclipse目录下:tarzxvfeclipse-SDK-3.6-linux-get.tar.gz–C~/把解压后的路径添加到环境变量中:exportPATH=$PATH:$~/eclipse安装配置ADT-0.9.9ADT是eclipse的插件,用于把Android开发工具整合在eclipse的UI界面中。可以从android官方网站下载,也可以使用服务器上已经下载的安装包:smb://ia-sz/product/android/ADT-0.9.9.zip启动eclipse,选择菜单Help--InstallNewSoftware,点击[Add…],弹出AddRepository对话框在name文本框中输入:AndroidPlugin点击location文本框后面的按钮[Archive…],选择ADT-0.9.9.zip,点击[OK]在Install对话框中选中DeveloperTools复选框,点击[Next]选择接受开源协议后点击[Finish]安装完成后可能需要重启eclipse安装AndroidSDKSDK是Android的开发库,主要包含开发应用程序的JavaAPI库,文档和一些工具。从官网上下载的SDK:解压SDK到~/android-sdk-linux_x86目录tarzxvfandroid-sdk_r07-linux-x86.tgz–C~/添加tools路径到PATH环境变量中:exportPATH=$PATH:~/android-sdk-linux_x86/tools启动eclipse,选择菜单Window-Preferences打开Preferences对话框选择级联菜单Android,在右边SDKLocation文本框中输入:androidsdk的路径,点击“OK”。选择eclipse菜单Window-AndroidSDKandAVDManager打开AndroidSDKandAVDManager对话框,选择AvailablePackages项,展开右边的级联菜单,选中所有“API8”及SDKTools点击[InstallSelected]安装。安装配置NDKNDK是Android提供的用于开发本地库的开发包,用于开发c/c++程序库。从官方网站或服务器下载android-ndk-r4b-linux-x86.zipsmb://ia-sz/product/android解压,把解压后的路径添加到环境变量中tarzxvfandroid-ndk-r4b-linux-x86.zip–C~/exportPATH=$PATH:~/android-ndk-r4b安装CDTCDT是eclipse插件,用于在eclipse环境开发c/c++程序。从服务器上下载安装包smb://ia-sz/product/android/cdt-master-7.0.0-I201006141710.zip解压后,将features与plugins目录下的文件拷贝到eclipse的对应目录下。1.3编译Android设置交叉编译环境切换到android源代码目录执行环境设置脚本cd~/android/master.build/envsetup.sh这个脚本会提供一组有用的命令,用help可以查看命令列表设置build环境Choosecombo选择目标设备Buildforthesimulatororthedevice?1.Device2.SimulatorWhichwouldyoulike?[1]选择debug级别Buildtypechoicesare:1.release2.debugWhichwouldyoulike?[1]选择平台Whichproductwouldyoulike?[generic]Youcanalsotypethenameofaproductifyouknowit.选择目标Variantchoicesare:1.user2.userdebug3.engWhichwouldyoulike?[eng]编译Android完全编译,耗时1小时25分$make编译当前目录下的模块,耗时1小时31分mm编译指定目录下的模块mmm模块的根目录清除上次编译输出makeclean单独编译模块生成.img文件makesnod编译SDK,耗时大约40分钟makesdk1.4工具adb(官网下载的sdk)exportPATH=$PATH:sdk目录/tools查看设备adbdevices安装软件,将指定的apk文件安装到设备上adbinstallapk文件路径卸载软件,-k参数,为卸载软件但是保留配置和缓存文件adbuninstall-k软件名执行一条shell命令adbshell[command]进入设备或模拟器的shelladbshell端口转发adbforwardtcp:端口号tcp:端口号从电脑上发送文件到设备adbpush本地路径远程路径从设备上下载文件到电脑adbpull远程路径本地路径查看bug报告adbbugreport使/system目录可写adbremount获取设备的序列号adbget-serialno显示应用程序的调试信息adblogcatandroid列出模拟器类型android-h或android-help启动模拟器管理器android列出模拟器类型androidlisttargets建立模拟器,id为模拟器类型的,YouAvdName为新建模拟器的名字androidcreateavd-tid-nYouAvdName列出已经建立的模拟器