【Android源码 栏目提醒】:网学会员为需要Android源码 的朋友们搜集整理了Android开发环境搭建 - 培训资料相关资料,希望对各位网友有所帮助!
Android 开发环境搭建 如遇问题请联系Steven_Sun 需要硬盘空间至少12G推荐在20G以上 文档结构 1.准备工作 为获取和编译源码所做的准备包括设置网络环境、安装一些必备工具等内容 2.源码获取 获取
Android源码可以选择官网下载或使用已下载好的源码 3.编译源码 编译
Android源码介绍整体编译、编译模块的方法 4.配置AP开发环境 主要是配置集成开发环境eclipse这是以后工作的主要视窗平台 5.代码调试 通过3个实例介绍如何新建Android工程以及调试已有代码 1 准备工作 1.1 检查网络 请确保你的网络和代理没有问题 使用sudo apt-get update命令没有错误提示即可。
没问题请跳过1.1节看1.2节 如果有问题请执行下面操作 1.1.1 编辑网络连接 从面板上依次点击 系统---gt首选项---gt网络连接出现如图1-1的窗口 选中“有线”标签中的Auto eth0然后点击“编辑”按钮。
图1-1 在弹出的窗口中如图1-2选择“802.1x安全性”标签 勾选“对此连接使用802.1x安全性“ “认证“处选择”受保护的EAPPEAP 用户名输入你的网域用户名 密码输入网域密码 其他默认点击“应用”按钮。
图1-2 1.1.2 配置代理服务器 目的是使终端以及apt工具能够使用网络。
以便更新软件源和下载
Android源码。
上一步配置好以后只是连接上了网域如果想要实现上网的目的还需要设置代理。
这里提供2种设置代理的方法使用ntlmaps配置代理、使用google浏览器配置代理。
使用ntlmaps代理有时会出现配置好以后仍然无法联网的情况注意要重复步骤1.1.2.1。
关键是配置完之后要重启电脑。
Google浏览器配置代理一般使用起来比较方便但缺点是下载
Android源码时长时间挂机可能出现断开的情况。
这时需要使用google浏览器浏览一下网页然后再重新输入下载命令继续下载即可。
1.1.2.1 使用ntlmaps配置代理 安装ntlmaps工具 将 smb://ia-sz/资料2/SZ软体研发部二课/Steven/ntlmaps_0.9.9.0.1-10ubuntu1_all.deb 这个压缩包拷贝到本地并安装。
安装时会有一个配置的对话框对应填写如下内容。
注只有第一次安装ntlmaps才有对话框以后再安装就没有了所以我这里也不能截图了如果以后需要再修改ntlmaps配置内容使用 sudo gedit /etc/ntlmaps/server.cfg命令 LISTEN_PORT: 5865 ntlmaps的默认端口最好不要改 PARENT_PROXY: proxycn 代理服务器我用的这个 PARENT_PROXY_PORT: 80 代理端口一般都用80 NT_DOMAIN: asuscn 域名大陆这边都用这个 USER: 用户名能联公司网域的那个不是ubuntu的 PASSWORD: 密码能联公司网域的那个不是ubuntu的并且密码中不能有井号 “” 上边的几行内容是对应修改ntlmaps/server.cfg本身也是有内容的。
现将ntlmaps/ server.cfg附在附件中若有问题时可以点这里对应查看。
注用户名和密码我去掉了 将代理设置应用到整个系统 从面板上依次点击 系统---gt首选项---gt网络代理 会弹出下面的配置窗口如图1-3 选中“手动配置代理服务器” HTTP代理处输入localhost 端口处输入5865 勾选“为所有协议使用相同代理” 然后点击“应用到整个系统”按钮。
图1-3 配置apt工具 使用命令sudo gedit /etc/apt/apt.conf 编辑apt的配置文件如果下面内容不存在就添加如下内容 Acquire::http::proxy quothttp://localhost:5865/quot Acquire::ftp::proxy quotftp://localhost:5865/quot Acquire::https::proxy quothttps://localhost:5865/quot 注意引号由于排版或者工具本身的原因下列代码中的引号有可能变成了不是标准英文的引号读者拷贝下列代码时需注意将引号改为标准英文引号 保存并退出之后重启电脑使配置生效。
电脑重启后再次在终端使用sudo apt-get update命令来更新软件源。
1.1.2.2 使用google浏览器配置代理 我们需要通过系统自带的firefox浏览器下载google浏览器然后通过google浏览器配置网络代理使atp工具生效。
安装google浏览器 Ubuntu自带firefox浏览器首先配置浏览器的代理使其能够连接网络。
打开firefox浏览器然后依次点击编辑---gt首选项---gt高级图标---gt网络标签---gt设置button 然后会弹出连接设置的窗口选择“手动配置代理” 代理使用172.21.134.1端口为80 然后勾选“为所有协议使用相同代理” 点击确定之后就可以上网了。
配置页面如图1-4。
图1-4 然后到google浏览器官网http://www.google.com/chrome/下载并安装google浏览器。
使用google浏览器配置代理 配置代理 点击google浏览器的配置按钮然后点击“选项”---gt高级选项标签---gt更改代理服务器设置button 选择“手动配置代理服务器” 代理使用172.21.134.1端口为80 勾选“为所有协议使用相同代理” 点击“应用到整个系统”。
如图1-5。
图1-5 现在整个系统都可以联网了打开终端使用sudo apt-get update命令更新软件源。
1.2 设置软件源source list 由于软件源不同可能会造安装某些工具时提示找不到该工具。
一般遇到最多的问题是sun-java5-jdk或sun-java6-jdk找不到使用命令sudo gedit /etc/apt/sources.list编辑软件源添加下面2行可以解决。
所有系统都一样32位、64位、9.10、10.04…… deb http://us.archive.Ubuntu.com/ubuntu/ jaunty multiverse deb http://us.archive.Ubuntu.com/ubuntu/ jaunty-updates multiverse 现在请检查一下你的source list中是否有上面2行没有的话现在就添加。
添加完毕使用命令sudo apt-get update更新软件源 附我的source list需要的话请点此处。
1.3 确定自己的Ubuntu版本 发行版本如9.10或10.04不是关键主要是确定自己的系统是32位还是64位 可以使用下面命令查看 getconf LONG_BIT 然后按照步骤1.4中32位或者64位系统对应安装需要的工具。
Example 经查看我的系统是32位的所以安装工具时要按照32位系统需要安装的工具来安装。
1.4 安装工具 32位系统和64位系统需要安装的工具不同。
64位系统点此处跳转 1.4.1 32位系统工具安装 试验版本Ubuntu 9.10 32-bit x86 首先安装一些工具软件然后安装Java5和Java6安装完后配置Java版本。
1.4.1.1 先安装一些工具软件 sudo apt-get install curl git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip libncurses5-dev zlib1g-dev sudo apt-get install valgrind sudo apt-get install lib64z1-dev libc6-dev-amd64 g-multilib lib64stdc6 1.4.1.2 安装Java5和Java6 在编译的时候会用到Java6我们期望全用Java6来编译但是在32位系统中使用Java6编译SDK会出错需要用到Java5的一些内容才能够编译通过所以在32位系统中Java5和Java6都是需要安装的。
Java5的安装 sudo apt-get install sun-java5-jdk 如果提示sun-java5-jdk 没有找到需要添加源 sudo gedit /etc/apt/sources.list 把下面2行加入到文件末尾 deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse 然后再更新源安装Java5 sudo apt-get update sudo apt-get install sun-java5-jdk 第一次安装java会出现java的配置画面如图1-4使用“Tab键”将焦点移动到“确定”上后边都确定就行了。
图1-4 Java6的安装 sudo apt-get install sun-java6-jdk 1.4.1.3 配置Java版本 由于Java5和Java6都安装了所以需要通过配置来给系统一个默认的Java版本。
分别执行下面的命令 sudo update-alternatives --config java选择2 java-6-sun手动 sudo update-alternatives --config javac选择2 java-6-sun手动 sudo update-alternatives --config jar选择2 java-6-sun手动 执行完可以通过java -version命令查看当前java版本显示是1.6.XXXX版本的就对了。
1.4.1.4 为编译SDK做准备工作 需要替换Java6的javadoc和javadoc.1.gz下面命令中将这两个文件都加了.bak后缀备份。
如果以后再有需要可以恢复。
执行下面命令 cd /etc/alternatives sudo mv javadoc.1.gz javadoc.1.gz.bak sudo ln -s /usr/lib/jvm/java-1.5.0-sun/man/man1/javadoc.1.gz javadoc.1.gz sudo mv javadoc javadoc.bak sudo ln -s /usr/lib/jvm/java-1.5.0-sun/bin/javadoc javadoc 1.4.2 64位系统工具安装 试验版本Ubuntu 10.04 64-bit x86 1.4.2.1 先安装一些工具软件 sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev java-common unixodbc 1.4.2.2 安装Java6 sudo apt-get install sun-java6-jdk 如果提示sun-java6-jdk 没有找到需要添加源 sudo gedit /etc/apt/sources.list 把下面2行加入到文件末尾 deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse 然后在终端更新源并重新安装Java6 sudo apt-get update sudo apt-get install sun-java6-jdk 第一次安装java会出现java的配置画面如图1-5使用“Tab键”将焦点移动到“确定”上后边都确定就行了。
java6的没有做截图借用java5的图 图1-5 前期准备工作就这些9.1032位的步骤稍微多一点10.0464位的比较简单。
其他版本的Ubuntu未做尝试。
按照系统的位数选择上面的操作步骤应该也是没问题的。
64位系统与32位系统需要做的事情有区别的时候本文档会特别说明如果没有说明的话就是两者都要做的没有区别比如下面的源码获取。
2 源码获取 获取源码可以选择从官网下载源码很费时间视网络情况48小时不等或者使用已经下载好的源码。
2.1 我要从官网下载源码 不下载的看2.2点这里 2.1.1 创建目录 cd 切用户主目录 mkdir -p android/bin mkdir -p android/froyo Android2.2的名字就是froyo在Android3.0发行前Android2.2就是最近的发行版了所以我这里也用froyo来命名文件夹愿意命名为master也一样的。
不过要注意我们下的载是master主分支也叫主线不是froyo分支二者的代码以及部分文件夹结构是有区别的。
2.1.2 安装配置repo 把repo工具安装在android/bin目录并改变执行权限 cd /android/bin curl http://android.git.kernel.org/repo gtrepo sudo chmod ax repo 使用代理上网的需要做下面的修改git改http sudo gedit /android/bin/repo 将第5行REPO_URLgit://android.git.kernel.org/tools/repo.git 改为REPO_URLhttp://android.git.kernel.org/tools/repo.git 下载前的初始化下的是主分支若下froyo分支要在下面第2行末尾加上 -b froyo cd ../froyo ../bin/repo init -u http://android.git.kernel.org/platform/manifest.git 在此init过程中 会出现配置git帐户的询问不用管他直接 回车-gt回车-gt然后输入y确认即可。
再修改一处git为http sudo gedit /android/froyo/.repo/manifests/default.xml 将fetchquotgit://android.git.kernel.org/quot 改为 fetchquothttp://android.git.kernel.org/quot 2.1.3 下载 在/android/froyo目录下执行 ../bin/repo sync 视网络情况耗时48小时不等 2.2 我使用已下载好的源码 路径smb://ia-sz/product/android/froyo.tar.gzfroyo分支 smb://10.64.57.51/share/android_main_branch_20101009.tar.gz 主分支 拷贝到本地然后解压即可。
3 编译源码 3.1 编译并运行android 3.1.1 编译android 由于之前环境已经搭配好代码也已下载到本机。
所以编译源码只需从终端进入源码文件夹执行make命令 cd /android/froyo make make命令执行时间较长大约2小时 注如果make之前执行过 . build/envsetup.sh 命令请重新开启一个终端来编译。
因为该命令改变了某些环境变量对之后模拟器的运行可能会造成影响。
3.1.2 导入环境变量并运行模拟器 导入环境变量 gedit /.bashrc 在最下面添加如下三行并保存退出 export ANDROID_PRODUCT_OUTAndroid跟根目录/froyo/out/target/product/generic ANDROID_PRODUCT_OUT_BINAndroid跟根目录/froyo/out/host/linuxx86/bin export PATHPATH:ANDROID_PRODUCT_OUT_BIN 同步环境变量 source /.bashrc 启动模拟器 编译好之后的emulator在/android/froyo/out/host/linux-x86/bin下而启动android需要的三个image文件 ramdisk.img system.img 和userdata.img则在/android/froyo/out/target/product/generic下. 可以通过下面命令启动模拟器: export PATHPATH:/android/froyo/out/host/linux-x86/bin 添加临时环境变量 cd out/target/product/generic emulator -system system.img -data userdata.img -ramdisk ramdisk.img 最后进入android桌面就说明成功了。
如果遇到启动模拟器失败的情况并且无法解决就删掉froyo下的out目录重新开启一个终端重新执行步骤3.1.1。
3.2 模块编译 可以试一下各个命令的用法这部分属于知识性内容工作中会用到。
首先需要执行一个导入环境的脚本在源码根目录执行 cd /android/froyo . build/envsetup.sh build前有空格 -gt West”.”就是source其实用source也可以 编译整个android工程在
android源码根目录froyo目录下执行 m 编译当前目录下的模块在一个有.mk文件的目录执行 mm 注意不要在froyo目录下执行mm命令否则之前编译的内容可能会被清空并且没有编译任何内容。
如果模块中的源码文件没有修改在模块中执行mm命令不会看到编译过程只要修改模块中一个源码文件就可以看到编译过程了。
例如给SnakeTest.java加Debug信息。
首先进入到模块目录有.mk的目录 cd /android/froyo/development/samples/Snake/tests 然后编辑java代码 gedit src/com/example/android/snake/SnakeTest.java 在任一函数中加入System.out.printlnquotJust a test.quot保存。
然后执行命令 mm 这时就可以看到编译的过程了。
编译指定目录下的模块 mmm 模块的目录 make 模块的目录 生成模块image make snod 单独编译的模块生成image文件在源码根目录froyo目录执行 如果要在eclipse中执行生成的img文件需要把生成的img文件替换SDK4.4节编译安装Android SDK根目录下platforms/android-2.2/images/下对应的img文件。
3.3 清除编译内容 如果想清除编译内容可以执行 make clean 3.4交叉编译环境设置 这部分放在最后因为修改了之后有可能在运行的时候可能会遇到问题因为这一部分其实是改变了编译时的一些变量。
上边编译的时候就是默认的下面是写的做一些修改的。
按照我写的选项编译之后没有问题其他情况没有试。
至于不同的配置所造成的影响还需深入研究。
在模拟器上跑的话随便怎么选都能跑起来环境变量都随着变了默认的环境变量列表附在本项3.1节末尾处。
首先从终端进入
android源码根目录下执行一个脚本 cd /android/froyo . build/envsetup.sh build前有空格这是一个环境的导入每新启动一个终端用到它的时候都要重新输入一次-gt West”.”就是source其实用source也可以 然后执行编译环境设置工具 choosecombo 然后会出现下面的选项 第一步选择目标设备: Build for the simulator or the device 1. Device 2. Simulator Which would you like 1 默认的选项是1也就是编译后在设备上跑模拟器也能跑可以打1也可以直接回车。
但考虑到看本文档的同事应该是新接触此项目所以此处建议输入2也就是在模拟器上跑。
当需要在设备上跑的时候记得改回1. 第二步选择代码格式: Build type choices are: 1. release 2. debug Which would you like 1 以后应该会选2我们是做开发的肯定要调试的。
默认是1我也用的是1release有的人用的是debug。
选2的话out目录的结构会有所不同release模式下target目录在out目录下而debug模式的话out目录下会多一个debug目录生成的target目录在debug目录下。
第三步选择产品平台: Which product would you like generic 注意:这里Google 源代码里默认是 generic我们暂时也先用generic输入generic。
待拿到硬件厂商提供的插件之后再进行导入那时针对我们自己的产品对应应该是选择littleton。
现在还不能选。
第四步选择目标产品 Variant choices are: 1. user 2. userdebug 3. eng Which would you like eng 选3意思是engineering至于与选其他两项的差别暂时没有找到明确说明还需深入研究。
附默认配置的环境变量列表。
PLATFORM_VERSION_CODENAMEREL PLATFORM_VERSION2.2 TARGET_PRODUCTgeneric TARGET_BUILD_VARIANTeng TARGET_SIMULATOR TARGET_BUILD_TYPErelease TARGET_BUILD_APPS TARGET_ARCHarm HOST_ARCHx86 HOST_OSlinux HOST_BUILD_TYPErelease BUILD_IDMASTER 4 配置开发AP的环境配置eclipse 为了开发AP的方便我们需要一个IDE集成开发环境 Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。
就其本身而言它只是一个框架和一组服务用于通过插件组件构建开发环境。
所以这部分的目的就是搭建好这个集成开发环境。
4.1 获取eclipse 可以在eclipse的官网下载也可使用下载好的。
官网下载地址http://www.eclipse.org/downloads/ 要注意有的版本不能编ADTAndroid Development Toolsrcp版本的可以编。
其他的版本若文件大小比这个rcp版188M小的最好不要下比它大的可以试试。
本地下载地址 smb://ia-sz/资料2/SZ软体研发部二课/Steven/eclipse-rcp-helios-SR1-linux-gtk.tar.gz 32位 smb://10.64.57.51/share/ eclipse-rcp-helios-SR1-linux-gtk-x86_64.tar.gz64位 拷贝到本地并解压。
4.2 为eclipse设置环境变量 将eclipse路径添加到环境变量便于启动 sudo gedit /.bashrc 最后一行加入 export PATHPATH:解压后的eclipse路径 例如我的export PATHPATH:/eclipse source /.bashrc 同步环境变量 现在在终端输入eclipse就可以启动了 4.3 编译并安装ADT 4.3.1 编译ADT 首先要在终端执行 export ECLIPSE_HOME你的 eclipse 路径 与上一步的设置不是一回事不执行会报错的 例如我的export ECLIPSE_HOME/eclipse 进入到
android源码根目录编译ADT cd /android/froyo ./sdk/eclipse/scripts/build_server.sh 你想放 ADT 的路径 例如我的/sdk/eclipse/scripts/build_server.sh /android 这个目录要存在并且不能有最后的斜杠/“/android/”就会报错 然后在目标目录下就会产生一个zip文件android-eclipse-v201010141108.zip 4.3.2 为eclipse安装ADT插件 打开eclipse 依次点击Help---gtInstall New Software---gtAdd---gtName栏输入 Android Plugin 点Archive要找到ADT zip文件 图4-1 点OK按钮 会发现Install窗口中间部分出现Developer Tools的复选内容。
勾选全部内容 如图4-2 图4-2 然后就next……next就行了 最后出现 图4-3 选中 Finish就可以了。
安装完后重启 eclipse. 看看 file---gtnew---gtproject 里 是否有 android 选项. 这部分是添加上边路径之后出现的然后全部勾选 4.4 编译并安装Android SDK: 4.4.1 编译SDK SDKSoftware Development Kit 即软件开发工具包 我们要做的Android项目需要贯穿所有层次kernel-libary-framework-applications所以SDK我们需要自己编译便于在需要的时候加Debug信息以及修改代码。
编译 SDK 需用下面的命令 cd /android/froyo make PRODUCT-.