菜鸟系列之一:在ubuntu linux下搭建android开发... 1
7.开始下载android platform的源代码... 4
第四步:安装JDK和编译Android源代码必备软件包... 4
一.修改/etc/.bashrc或profile加入以下内容... 6
四.安装ADT--- Android Development Tools插件... 9
1.重启之后, update your Eclipse preferences 指向SDK文件夹:. 10
2.设置Eclipse的JavaJDK的属性设置。... 10
第十一步:使用Eclipse开发 Android 应用... 11
二.编辑helloWorldAnndroid源代码... 12
制 作 人: janewu
日 期 :2009年3月12日
菜鸟系列之一:在ubuntu linux下搭建android开发平台
第一步:激活root用户
(说明:在ubuntu liunx 下root用户默认的情况下是不被激活,由于在安装过程中要用到root权限每次都要权限切换很不方便,所以有必要激活root用户.)
步骤:
1. 在终端执行 sudo passwd root 指令后,系统将会提示你设置一个新的 root 帐号密码。
2. 点击 System -> Preferences -> Login Window 菜单,并切换到 Security 选项页,然后选中其下的“Allow local system administrator login”选项。
第二步:设置网络确保可以上网
(说明:在安装过程中要用到网络的资源)
情况:在Vmware虚拟环境下,网络设置为如下:
>>>>>>>>>>>>>>用root用户进入系统<<<<<<<<<<<<<<<<<,
一..若有DHCP服务器则默认可以上网;
二..如果没有DHCP服务器则手动设置IP地址;
(1)要为网卡配置静态IP地址编辑文件/etc/network/interfaces:
设置当前主机的主机名称,编辑文件/etc/hostname
设置当前主机的主机名称,编辑文件/etc/resolv.conf
用下面的命令使网络设置生效:
#sudo /etc/init.d/networking restart
3.附:也要把Vmare tools装上否则不能上网(原因不详)。
选择 Vmware workstationr的菜单,VM---àInstall Vmware Tools安装TOOLS。
# mount /dev/cdrom /media/cdrom //挂载光驱;
# cd /media/cdrom //进入光盘目录
# tar –zxvf VMwareTools-6.5.0-118166.tar.gz //解压
# cd vmware-tools-distrib
# ./ vmware-install.pl //运行安装脚本
接下来按默认安装,有提示yes or no 的地方输入yes ,没有提示的地方敲回车。
第三步:下载Android源代码
方法一:直接下载
点击http://www.gphone.com.cn/uploadz/android.src.20081105.tar.gz 下载Android源代码。
在/etc/.bashrc或/etc/profile文件中声明工程路径
export AndroidProject=/******(假设为root) //指定android代码存放路径
(将源代码放在$AndroidProject/android目录下)
方法二:从网络下载
安装下载环境所需的工具:
Repo版本管理工具, GIT工具内核, Curl下载工具(具体作用见附录)
1.安装 git工具内核: 命令 # apt-get install git-core
2.安装curl工具: 命令 # apt-get install curl
3.安装Valgrind工具 命令 # apt-get install Valgrind
4. 下载repo工具
在/etc/.bashrc或/etc/profile文件中声明工程路径
Export AndroidProject=/******(假设为root) //指定android代码存放路径
# curl http://android.git.kernel.org/repo > $AndroidProject/bin/repo
# cd $AndroidProject/bin
# chmod +x repo
在/etc/.bashrc或/etc/profile文件中声明repo路径
export PAHT=$PATH:/$ AndroidProject/bin/ //声明repo路径
5.下载Android源代码
# cd $AndroidProject
# mkdir android //建立存放代码目录
# cd android
# repo init -u git://android.git.kernel.org/platform/manifest.git
通常情况下会出现error提示(如果是以前没有创建过repo账户的话),这个不要紧,忽略掉它好了。
6.配置repo账户
# git config --global user.email "[email=xxxxx@xxxxxxx]xxxxx@xxxxxxx[/email]"
# git config --global user.name "xxxxxx"
7.开始下载android platform的源代码
# repo sync (这个操作会持续一段时间,与你自己的网速有关)
第四步:安装JDK和编译Android源代码必备软件包
安装必要工具
一.安装JDK
进入SUN网站
然后在Platform处选择 linux,然后选择同意License Agreement ,点击continue; 然后选择jdk-6u4-linux-i586.bin进行下载。下载完成后,在linux shell(认以root 身份登录)下运行刚才下载的可执行文件并将其拷贝到AndroidProject的工程目录下(上面在/etc/.bashrc或/etc/profile所声明的路径):
# chmod u+x jdk-6u4-linux-i586.bin
# ./jdk-6u4-linux-i586.bin
根据提示即可完成jdk的安装。
# vim .bashrc 或 # vim profile //声明java虚拟机的路径
然后在 .bashrc文件(或者profile 文件)的后部添加
export JAVA_HOME=$AndroidProject/jdk1.6.0_04/
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$ AndroidProject/bin
然后保存.bashrc文件(或profile)并退出。
打开另一个shell,输入 # java –version
如果出现了关于java的版本信息,则说明jdk安装成功
# apt-get install sun-java6-jdk python //会安装在/usr/lib/jvm/java-6-sun-1.6.0.10
# apt-get install sun-java6-jre
根据提示即可完成jdk的安装。
# vim .bashrc 或 # vim profile //声明java虚拟机的路径
然后在 .bashrc文件(或者profile 文件)的后部添加
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.10
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$ AndroidProject/bin
二.安装必备软件包
# apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip make libsdl1.2-dev libsdl1.2debian libx11-dev
第五步:安装arm-gcc交叉编译器
Android源代码中已附带了arm gcc交叉编译器路径为:
$AndroidProject/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin
# vim .bashrc 或 # vim profile //声明交叉编译器路径
export PATH=$PATH:$ AndroidProject/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin
第六步:编译Android源代码
直接进入Android所在目录运行make即可:
#make
编译完毕以后,会发现在代码目录下多了一个out目录
第七步:安装SDK
方法一:直接从网上下载
下载最新的Android SDK
http://code.google.com/android/download.html将其解压在工程目录AndroidProject目录下
# cd $AndroidProject //进入工程目录
(解压完后的SDK的文件名为android-sdk-linux_x86-1.0_r2)
# vim .bashrc 或 # vim profile //声明AndroidSDK路径
Export PATH=$PATH:$ AndroidProject/android-sdk-linux_x86-1.0_r2/tools
方法二:从编译生成的源代码中获取
若Android源代码编译成功后会生成一个out目录,AndroidSDK会生成在此目录下
具体路径/AndroidProject/android/out/host/linux-x86/bin
# cp –a linux-x86/bin $AndroidProject //将其拷到工程目录下
# mv linux-x86 AndroidSDK //将其重命名
# vim .bashrc 或 # vim profile //声明AndroidSDK路径
Export PATH=$PATH:$ AndroidProject/AndroidSDK/bin
第八步:测试设置运行环境
一.修改/etc/.bashrc或profile加入以下内容
ANDROID_PRODUCT_OUT=$AndriodProject/android/out/target/product/generic
export ANDROID_PRODUCT_OUT
设置完毕后,退出并重新登录
二.使用虚拟机运行
cd $AndroidProject/android/out/target/product/generic
emulator -image system.img -data userdata.img -ramdisk ramdisk.img
(注如果generic目录下没有生成system.img userdata.img ramdisk.img三个文件,那么在android目录下重新再make一次。)
应该看到以下的画面:
第九步:编译Android内核
一.获取.config配置文件
# emulator //启动模拟器
等模拟器运行到上图状态的时候
# cd android/kernel //进入Android内核目录
# adb pull /proc/config.gz ./ //下载config.gz到当前目录
#gzip –d config.gz //解压出来的文件名为config
#mv config .config //将其重命名成内核默认配置文件.config
二.修改Makefile
修改\kernel\Makefile,在Makefile文件中找到ARCH与CROSS_COMPILE这两个变量,修改如下:
ARCH:=arm
CROSS_COMPILE:=arm-eabi-
三.清除上次的编译,以便开始新的编译
请输入命令: $make mrproper
四.配置内核
# make menuconfig //读入.config配置文件,配置内核并保存
# make zImage //编译内核
编译成功后会在kernel/arch/arm/boot/目录下生成zImage文件。
第十步:安装Eclipse应用开发平台
一.从网络下载Eclipse新版本
(说明:若用apt-get install eclipse网络安装会安装3.2版本的,而当要安装ADT—Android Development Tools时还需要安装其它插件,为了避免麻烦建议从网络下载3.3或3.4版本,我试过已成功装上ADT—Android Development Tools)
进入网址http://www.eclipse.org/downloads/下载Eclipse IDE for Java EE Developers (163 MB)要下linux 版本的。
二.解压并安装eclipse
# tar –zxvf eclipse-jee-ganymede-SR2-linux-gtk.tar.gz //解压完是一个eclipse目录。
三.在应用菜单中添加eclipse启动选项
点击system--à首选项----à主菜单
选中编程选项---àNew Item ----à编辑eclipse启动配置
Name: 为装要在application--à编程,选项中显示的名字
Command: 指定eclipse的可执行路径
Commend: 给eclipse一些描述
四.安装ADT--- Android Development Tools插件
如果你要使用 Eclipse IDE作为开发Android应用的环境,你可以安装支持Android工程和工具的通用插件Android Development Tools (ADT). ADT插件包含强大的扩张,使得创建,运行和调试Android 更快速,更简单。下载和安装ADT插件,请按照你们各自Eclipse版本步骤安装。
Eclipse 3.3 (Europa) | Eclipse 3.4 (Ganymede) |
开始Eclipse,然后选择 Help > Software Updates > Find and Install.... 对话框出现后,选择 Search for new features to install 点击 Next. 点击New Remote Site. 在对话框中,输入远程站点的名字(如Android Plugin),输入站点如下: https://dl-ssl.google.com/android/eclipse/ 点击OK. 你可以看到新的站点添加到搜索列表中(并检查),点击Finish. 在下面的搜索结果对话框,选择复选框 Android Plugin > Developer Tools. 它将会检查特性: "Android Developer Tools", 和 "Android Editors". Android 编辑器的特性是可选的,但我们推荐安装它,如果你选择安装,需要前面提到的WST插件。点击 Next. 阅读许可协议,然后选择接受许可协议,点击 Next. 点击 Finish. ADT插件没有签名,你可以点击“Install All”来安装所有东西。 重启 Eclipse. | 启动 Eclipse, 选择 Help > Software Updates.... 在出现的对话框里,点击标签页 Available Software. 点击 Add Site... 输入下面的地址: https://dl-ssl.google.com/android/eclipse/ 点击 OK. 返回可用软件的视图,你会看到这个插件. 选择下一步到 Developer Tools 并点击 Install... 在接下来的安装窗口,选中"Android Developer Tools"和 "Android Editors"。Android编辑器特性是可选的,但是我们推荐安装它,如果你选择安装,需要前面提到的WST插件。点击 Finish. 重启 Eclipse。 |
1.重启之后, update your Eclipse preferences 指向SDK文件夹:
(1).选择 Window > Preferences... 来打开属性面板。
(2).从左边面板选择 Android,在主界面上定位SDK 点击 Browse... 然后定位 SDK文件夹(上面安装SDK的位置)。
(3).点击 Apply, 然后点击 OK。
2.设置Eclipse的JavaJDK的属性设置。
(1).选择Window > Preferences... 打开编辑属性窗口
(2) 选择Java 属性面板
(3) 选择Java编译器为6.0
(4) 点击Apply, 和OK
第十一步:使用Eclipse开发 Android 应用
一.创建一个Android 工程
ADT 插件提供了一个新的工程向导帮助我们快速的建立Android工程和编辑现存的Android项目的代码。
按照下面的步骤建立Android工程:
(1). 选择File > New > Project
(2). 选择Android > Android Project, and 点击Next
(3). 设置工程的用途
选择 Create new project in workspace
可以建立一个新的Android工程,输入工程的名字,代码的开发包的名字,应用界面的类名字,应用程序的标题的名字。
选择 Create project from existing source
可以根据现存的代码建立一个工程. 通过这个选项可以建立并运行现存的Google提供的Example Application (在Android SDK的目录中可以找到)
(4). 选择 Create project from existing source
(注:Project name一定要与Application name名字要相同)
(5). 点击Finish.
二.编辑helloWorldAnndroid源代码
(1).打开androidjanetest工程源程序
File-àopen file 打开androidjanetest工程目录下的src/test/china/com/android.java
(2).修改生成的源代码
将
package test.china.com;
import android.app.Activity;
import android.os.Bundle;
public class android extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
修改成
package test.china.com;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView ;
public class android extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView (this);
tv.setText(“this is jane test”);
setContentView(tv);
}
}
三.运行并调试建立一个启动配置
在使用Eclipse调试程序之前,必须为工程建立一个启动配置:
1. 选择 Run > Run Configurations
2. 在左边的类型中选择 Android Application 点击New.
3. 输入一个配置的名字.
4. 在 Android 选项中, 选择一个应用的界面最为应用启动的主界面.
5. 点击 Apply保存配置, 点击Run 或者 Debug开始调试程序.
调试应用程序
一旦建立了工程启动配置就可以按照如下的步骤调试程序:从Eclipse的主菜单中选择点击run图标-à选择android application运行代码
如果成功则会显示如下图片信息:
附录:
一.Git是什么?
Git --- The stupid content tracker, 傻瓜内容跟踪器。Linus 是这样给我们介绍 Git 的。Git 是用于 Linux 内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。
实际上内核开发团队决定开始开发和使用 Git 来作为内核开发的版本控制系统的时候,世界开源社群的反对声音不少,最大的理由是 Git 太艰涩难懂,从 Git 的内部工作机制来说,的确是这样。但是随着开发的深入,Git 的正常使用都由一些友好的脚本命令来执行,使 Git 变得非常好用,即使是用来管理我们自己的开发项目,Git 都是一个友好,有力的工具。现在,越来越多的著名项目采用 Git 来管理项目开发,例如:wine, U-boot 等,详情看 http://www.kernel.org/git
作为开源自由原教旨主义项目,Git 没有对版本库的浏览和修改做任何的权限限制。它只适用于 Linux / Unix 平台,没有 Windows 版本,目前也没有这样的开发计划。
本文将以 Git 官方文档 Tutorial, core-tutorial 和 Everyday GIT 作为蓝本翻译整理,但是暂时去掉了对 Git 内部工作机制的阐述,力求简明扼要,并加入了作者使用 Git 的过程中的一些心得体会,注意事项,以及更多的例子。建议你最好通过你所使用的 Unix / Linux 发行版的安装包来安装 Git, 你可以在线浏览本文 ,也可以通过下面的命令来得到本文最新的版本库,并且通过后面的学习用 Git 作为工具参加到本文的创作中来。
中文教程:http://www.bitsun.com/documents/gittutorcn.htm
二. Valgrind工具是什么
valgrind工具还是相当不错的。他的下载地址是http://valgrind.org/downloads/current.html#current 下载一个valgrind 3.2.3 (tar.bz2) 工具,按照里面的README提示,安装后就可以使用这个工具来检测内存泄露和内存越界等。这是一个没有界面的内存检测工具,安装后,输入valgrind ls -l 验证一下该工具是否工作正常(这是README里面的方法,实际上是验证一下对ls -l命令的内存检测),如果你看到一堆的信息说明你的工具可以使用了
在编译你的程序时,请设置-g参数,编译出后使用如下的命令来判断你的程序存在内存泄露:valgrind --tools=memcheck --leak-check=full yourProg在输出信息中就会看到你的内存问题了。关于这些参数是什么意思可以参考valgrind --help 的输出信息 。
三.Curl是什么
Curl是一个利用URL语法在命令行方式下工作的文件传输工具。它支持很多协议. curl官方网站:http://curl.haxx.se
最简单的用法:获得netscape's 网站网页:curl http://www.netscape.com/
在FTP服务器获得README文件:
curl ftp://ftp.funet.fi/README 获得一个使用8000端口的web服务器网页:
curl http://www.weirdserver.com:8000/
获得一个FTP目录的镜象: curl ftp://cool.haxx.se/
获得一个gopher服务器上的文档: curl gopher://gopher.funet.fi
获得自定义目录的文件: curl dict://dict.org/m:curl
一次获得2个文档: curl ftp://cool.haxx.se/ http://www.weirdserver.com:8000/
下载文件
将一个WEB页保存到硬盘上,名字叫thatpage.html:
curl -o thatpage.html http://www.netscape.com/
下载index.html文件, -O是大写的字母o。 (如果没有文件名,将会出现错误)
curl -O http://www.netscape.com/index.html
下载2个文件:
curl -O www.haxx.se/index.html -O curl.haxx.se/download.html
使用密码
FTP
ftp服务器使用 名字+密码, 可能包括他们的URL:
curl ftp://name:passwd@machine.domain:port/full/path/to/file
或者用-u指定名字和密码
curl -u name:passwd ftp://machine.domain:port/full/path/to/file
FTPS你也可以使用SSL选项.
HTTP HTTP的URL不支持名字+密码. 但Curl无论如何都支持ftp风格的接口。curl http://name:passwd@machine.domain/full/path/to/file
或分别指定名字和密码,同样还是使用-u选项
curl -u name:passwd http://machine.domain/full/path/to/file
HTTP也许提供许多鉴别方法和 curl支持若干: 基础, Digest, NTLM 和 Negotiate. 没有哪个有效的使用方法, curl默认使用'基础'. 你可以询问curl以获得更多的保护。任何服务器都会提供url, 使用
--anyauth.注意! 自从HTTP URLs 不支持用户名和密码, 当curl使用一个代理的时候,你不能使用这个风格. 你必须使用-u选项来读取.
HTTPS通常都用私人的证书, 说明如下.
GOPHER Curl 没有密码支持gopher.
PROXY 使用端口888代理下载一个文件,代理地址是my-proxy:
curl -x my-proxy:888 ftp://ftp.leachsite.com/README
从一个http服务器下载一个文件,需要用户名和密码, 同样使用如上设置:
curl -u user:passwd -x my-proxy:888 http://www.get.this/
一些代理需要特别的验证. 用 -U 来设置:
curl -U user:passwd -x my-proxy:888 http://www.get.this/
RANGES
一个客户只能请求一个连接或更多的连接. Curl支持-r标记.
获得文件的前100 bytes:
curl -r 0-99 http://www.get.this/
获得文件的末尾500 bytes:
curl -r -500 http://www.get.this/
Curl 也支持简单的ftp文件. 你只能规定开始和停止的位置.获得ftp服务器上的readme的前100 bytes:
curl -r 0-99 ftp://www.get.this/README
UPLOADING
FTP 一个命令上传全部数据: curl -T - ftp://ftp.upload.com/myfile
往一个站点上上传数据, 并且使用名字和密码
curl -T uploadfile -u user:passwd ftp://ftp.upload.com/myfile
往站点上上传一个本地文件, 并且也使用本地文件名:
curl -T uploadfile -u user:passwd ftp://ftp.upload.com/
HTTP
上传所有数据到一个http服务器:
curl -T - http://www.upload.com/myfile