(一) 安装虚拟机VMware
1.1 获取Ubuntu Linux
1. 安装虚拟机VMware
UbuntuLinux可以从此网址获得http://www.ubuntu.org.cn/getubuntu/download/。现在最新版本的Ubuntu Linux是10.10版本
1.2 创建虚拟机
打开VMware File-->New-->Virtual Machine.
创建过程主要有以下改动点
1. 选择自定义安装
2. 选择操作系统和版本 操作系统选择Linux 版本选择Ubuntu
3.虚拟机名字和存储位置
4. 内存推荐 1024
5. 网络连接选择NAT
6. 硬盘空间 至少30G
1.3 安装Ubuntu
VM --〉Settings--->Hardware--->CD Rom选择Use ISOimage, 选择下载的ubuntu 10.10目录,
OK之后会提示Install ubuntu
安装过程中在Preparing to install ubuntu界面请把下面2个都选中
Download updates while install
Install this third-party software
另外需要输入
User name
password
Encrypt打勾
需要注意的是安装过程中请拔掉网线加快速度。
System-->Administration-->LanguageSupport--->Install/Remove Languages
1.4.3 配置终端窗口
应用程序--〉附件--〉终端按右键可将终端添加到面板 方便日后使用
1.4.4 关于root帐号
Ubuntu缺省禁用root,可以使用sudo passwd root来设置root密码
屏蔽 root 帐号 使用: sudo passwd -l root
1.4.5 以root登录
右上角电源图标按左键,选择切换用户
1.5 共享
1.5.1 虚拟机访问windows
共享
在windows中为目录设置共享
访问
虚拟机中 位置—〉计算机—〉网络—〉windows网络—〉VIATELECOM 输入域用户名,域名,密码即可
1.5.2 Windows访问虚拟机
共享
位置—〉主文件夹
选择要共享的文件夹,按右键—〉共享选项来创建共享
$ifconfig查到ip地址
如果共享失败:
1.sudo cp/usr/bin/testparm.samba3 /usr/bin/testparm
2.sudo cp/usr/bin/net.samba3 /usr/bin/net
3.sudochmod +x /usr/bin/testparm /usr/bin/net
访问
回到windows, Run, 输入上面查到的ip地址,输入用户名密码即可
1.6 Install VMware Tool
安装VMware可以改变虚拟机显示的大小,也可以让真机喝虚拟机实现字符串相互拷贝,相互分享共享目录......
1.6.1 进入ubuntu系统后,选择vmware 菜单VM->Install VMware tools
1.6.2 回到虚拟机(Ubuntu)桌面会看到一个vmware tools的cdrom图标。
1.6.3 打开它,复制“vmwaretools....tar.gz”,到 {your select dir} ; 解压为文件夹 vmwaretools....
1.6.4 查看刚才解压的目录vmwaretools下的.pl文件是否有执行权限,如果没有则添加
1.6.5 sudo ./vmware-install.pl
1.6.6 接下来一路输入YES或者回车,直到你看到---the vmware team就可关闭窗口,然后重新启
Ubuntu 10.10 在安装的时候我碰到几个问题:
- What is the location of the directory of C header files that match your running kernel? [/usr/src/linux/include]
- [ENTER]
- The path "/usr/src/linux/include" is not an existing directory.
由于 Kernel 版本是 APT 抓下來的最新版,所以需要输入 “/usr/src/linux-headers-2.6.35-22-generic/include “
要注意的是,VMWare Tools 安装时会询问目前系统使用的 Kernel header,所以如果 /usr/src 下有多个 Kernel header 目录,最好先执行 “uname -r“ 指令,确认应该使用那个本版。另外可以不直接使用 “/usr/src/linux-headers-2.6.35-22-generic/include” ,先 “sudo ln -s /usr/src/linux /usr/src/linux-headers-2.6.35-22-generic/include”
- What is the location of the directory of C header files that match your running kernel? [/usr/src/linux/include] /usr/src/linux-headers-2.6.35-22-generic/include
按回车以后,还是报错说,指定的Kernel headers和当前系统使用的版本不匹配。
- The directory of kernel headers (version @@VMWARE@@ UTS_RELEASE) does not match your running kernel (version 2.6.35-22-generic). Even if the module were to compile successfully, it would not load into the running kernel.
但事实并不是不匹配,而是 Kernel 中有一个变量 UTS_RELEASE 的不存在了。以前这个定义放在 /usr/src/linux-headers-2.6.35-22-generic/include/linux/version.h ,而现在已经移到了/usr/src/linux-headers-2.6.35-22-generic/include/linux /utsrelease.h。所以简单的方法,我们只需要在version.h中添加 #define UTS_RELEASE "2.6.35-22-generic" (具体值使用 “uname -r“ 查看)
接下来继续,又会有新的错误提示!! -_-|| 找不到 autoconf.h 原因是因为 autoconf.h 不再VMware tools 安装程序预设的寻址目录中。
- The path "/usr/src/linux-headers-2.6.35-22-generic/include" is a kernel header
- file directory, but it does not contain the file "linux/autoconf.h" as
- expected. This can happen if the kernel has never been built, or if you have
- invoked the "make mrproper" command in your kernel directory. In any case, you
- may want to rebuild your kernel.
可以简单的把它链接过来:
cd /usr/src/linux-headers-2.6.35-22-generic/include/linux
sudo ln -s ../generated/autoconf.h ./
然后应该能顺利完成安装了
------------------------------------------------------------------------------------------------------------------------------------------------
(二) 下载代码,编译,调试
1.1 安装更新库
为了能够编译和下载google发布的android源码,需要一些额外的工具和库的支持。
在命令行终端输入如下命令安装这些工具和库,命令apt-get就是从软件源进行各种软件的更新和安装
$ sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
a tool that will help you find memory leaks, stack corruption, array bounds overflows, etc
$ sudo apt-get install valgrind
$ sudo apt-get install lib32readline5-dev
由于Ubuntu 10.10自带的java不是sun-java6-jdk,因此无法直接安装,需要更新软件源重新下载安装
1.1.4.1 修改ubuntu的软件源
$gedit /etc/apt/sources.list
在最后一行加入
deb http://cz.archive.Ubuntu.com/ubuntu hardy-updates main multiverse
1.1.4.2 更新源文件
$ apt-get update
1.1.4.3 安装sun-java6-jdk
$apt-get install sun-java6-jdk
安装过程中会出现正在设定的窗口,此窗口要求按确定,无法用鼠标,需要用tab键切换到确定(红底黑字)被选中,再按回车
1.1.4.4 设置java环境
$gedit /etc/profile
在该文件最后加入
JAVA_HOME=/usr/lib/jvm/java-6-sun
export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
1.1.4.5 设置系统默认的jdk版本为1.6
如果系统中安装了多个版本的jdk,可以使用下列命令来查询,修改
1.察看当前配置,并修改配置
$update-alternatives –config java
1.1.4.6 Ubuntu默认为dash, 但dash功能较弱,所以将其改为bash.
$ln –snf /bin/bash /bin/sh
1.2 安装Eclipse
Ubuntu 10.10虚拟机里打开浏览器,http://www.eclipse.org/downloads/, 选择Eclipse Classic 3.6.1 169M, Linux 32 bit下载, 下载完成清空列表,关闭窗口
打开文件管理器, 下载后的文件存在于download目录
位置—〉主文件夹
将下载的文件复制到usr/lib目录,双击解压缩, 然后找到eclipse按右键选择创建链接,将创建的链接拖动到桌面即可方便的运行eclipse, 或者你也可以把它加到菜单项 System->Preferences->Main Menu, 选择Programming,New Item,这样就可以通过菜单执行了
1.2.3 安装ADT
Android Development Tools开发插件
运行Eclipse,选择help->Install new software 选择add,将会弹出一个框输入http://dl-ssl.google.com/Android/eclipse, 点OK
选择要安装的软件,点next,然后选择接受协议,直到安装成功
1.3 repo
切换到usr/bin目录
$ curl http://android.git.kernel.org/repo >repo
$ chmod a+x repo
1.4 android gingerbread 源码获取
$ mkdir Gingerbread
$ cd Gingerbread
1.4.2 初始化repo客户端
使用下列命令初始化 -b代表branch , gingerbread是android 2.3的分支名字, Android版本都对应有个代号,基本以甜品命名
Cupcake(1.5)àDonut(1.6)àÉclair(2.0)àFlan(2.1)àFroyo(2.2)
现在能下载到的最新源码是gingerbread(2.3)
我还下载了android-2.1_r2,éclair, froyo
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread
过程中会要求输入用户名和电子邮件
To use the Gerrit code-review tool, you will need an email address that is connected with a registered Google account (which does not have to be a Gmail address). Make sure this is a live address at which you can receive messages . The real name that you provide here will show up in attributions for your code submissions.
Init结束会提示
repo initialized in /Gingerbread
使用sync来同步源码
$ repo sync
1.4.4 使用http获得代码
1.3.3中的repo脚本打开,把git改为http
2.3.4.2中使用$ repo init -u http://android.git.kernel.org/platform/manifest.git -b gingerbread初始化客户端
3.修改源码目录.repo/manifest.xml文件 fetch=”git:改为fetch=”http
得到源代码后,编译十分简单。进入源代码的根目录下,输入make即可进行编译。
Android2.3默认在64bit上编译,需要修改如下make文件才能在32bit机器上编译
$ gedit build/core/main.mk
#ifneq (64,$(findstring 64,$(build_arch)))
ifneq (i686,$(findstring i686,$(build_arch)))
$(warning ************************************************************)
$(warning You are attempting to build on a 32-bit system.)
$(warning Only 64-bit build environments are supported beyond froyo/2.2.)
$(warning ************************************************************)
$(error stop)
endif
gedit external/clearsilver/cgi/Android.mk,
gedit external/clearsilver/java-jni/Android.mk,
gedit external/clearsilver/util/Android.mk,
gedit external/clearsilver/cs/Android.mk
#LOCAL_CFLAGS += -m64
#LOCAL_LDFLAGS += -m64
LOCAL_CFLAGS += -m32
LOCAL_LDFLAGS += -m32
1.5.2 配置Android SDK
make编译完成后,执行make sdk命令,生成对应于该版本源代码的sdk。
cd ~
gedit .bashrc
将下列两行添加到文件末尾。其中[Android源码目录]是android源码所在路径
export PATH=$PATH:[Android源码目录]/out/host/linux-x86/bin
export ANDROID_PRODUCT_OUT=[Android源码目录]/out/target/product/generic
保存文件。在终端中执行source ~/.bashrc
1.5.4 设置SDK
打开Eclipse
设置Android SDK Home,Window->Preference
如下图设置android SDK路径,然后选择Apply
1.5.5.1 .classpath文件
在android源文件根目录执行如下命令,将eclipse工程配置文件移到根目录。并设置为可写状态。
$ cp development/ide/eclipse/.classpath .classpath
$ chmod u+w .classpath
1.5.5.2 修改eclipse程序的配置
1)修改eclipse缓存设置
把eclipse.ini(在eclipse软件的安装目录下)的3个值改为下面的值:
-Xms128m
-Xmx512m
-XX:MaxPermSize=256m
2)把android-formatting.xml和android.importorder导入eclipse
android-formatting.xml、.classpath和android.importorder都放在development/ide/eclipse/下 android-formatting.xml用来配置eclipse编辑器的代码风格;android.importorder用来配置eclipse的import的顺序和结构。
在window->preferences->java->Code style->Formatter中导入android-formatting.xml
在window->preferences->java->Code style->Organize Imports中导入android.importorder
1.5.5.3 创建工程
File—〉New—〉Java Project
去掉Use default location的勾,选择Gingerbread目录,如下图所示
完成后可以build该工程。可能会出现编译错误,可以通过修改.classpath文件修正
上图中JRE要改为1.6,如果创建时忘记了,可以在创建完成后在属性里修改
.classpath要添加
Framework/ex/common/java目录
1.5.6 在Eclipse中调试
关闭eclipse
1. 环境配置
$. build/envsetup.sh
那么就会多出mm/mmm等命令,mm/mmm用来编译模块(包括C、C++、JAVA程序)。我们也可以直接在 android源码根目录下执行“make 模块名”来编译模块。
2.编译模拟器
$lunch 1
3.启动模拟器
$emulator&
4.启动ddms
DDMS 的全称是Dalvik Debug Monitor Service,它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。
在安装好的android sdk包里面,包含了ddms,启动eclipse,在Eclipes的debug中,选择other,在弹出的窗口中,可以看到ddms,点击就可以显示出来了,详细说明,请看http://www.moandroid.com/?p=638。
$ddms&
这里需要说明一下:
如果是使用eclipse的ADT插件ddms的,则先启动eclipse.
如果使用控制台命令启动ddms的,需要在eclipse之前启动,
a. 使用ADT插件ddms,需要设置port为 8700,打开Eclipse
RunàDebug ConfigurationàRemote Java Application按右键选New, 如下图设置Name, Project和Port(8700)需与ddms的虚拟机端口号一致. 然后Apply, Debug.
b. 使用控制台命令启动ddms,需要设置port 为8800,如下所示
以上都是我从网上摘录,自己稍加整理,留作备份. 如有违反版权,请告知!