- 浏览: 538052 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
landerson:
明显就有要求的嘛
ANDROID轻量级JSON序列化和反序列化[转] -
jimode2013:
很不错,就是需要这个方法
多个UIViewController使用addSubView,第二个 UIViewController 不响应旋转[转] -
w11h22j33:
...
[转]NSMutableArray中的自动释放对象让我郁闷了一整天 -
w11h22j33:
UILabel* label = [[UILabel a ...
Iphone开发 -
w11h22j33:
http://mobile.51cto.com/iphone- ...
获得通讯录中联系人的所有属性[转]
为了方便,我把所有操作写成了命令,按顺序(软件安装--源码下载--编译)执行成功即可:
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
2. sudo apt-get install sun-java6-jdk
3. cd
4. mkdir -p software/bin
5. curl http://android.git.kernel.org/repo >software/bin/repo
6. chmod a+x software/bin/repo
7. mkdir -p software/android/src/new
8. cd software/android/src/new
9. repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo
10. repo sync
11. make -j4
===================================================================================================================
1.
前言
本文叙述了如何从零开始搭建基于Google官方Android 2.2.1(froyo)源码的开发环境,包括如何下载源代码、编译源代码,以及在模拟器中运行编译生成的镜像。文中开发机是基于Ubuntu 10.04的,同样适用于其他版本的Ubuntu。现在需要弄清楚一下几点,防止后面出现误操作:
下载源代码是用参数:repo init -u git://android.git.kernel.org/platform/manifest.git
-b
froyo (下载的是2.2.1版本,编译环境操作系统必须是32位的,jdk1.5版本的---jdk1.5没有64位版本)。如果是没有带参数的下载源代码,将会下载所有的源代码,编译环境要求:操作系统64位,jdk1.6,(偶是2010年10月15日做)但很有可能会出现交叉编译工具错误:“ /bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc: 没有那个文件或目录
”(实际上是有arm-eabi-gcc这个文件的,偶怀疑是版本问题--32位的,而环境要求是64位的—-- 下载全部代码)
2. 下载JDK 1.5(不建议此下载方式,防止配置环境参数出错。建议用apt-get install方式,请跳转到:第4步)
编译Android源码需要JDK1.5版(主要是需要其中的javadoc),1.6版是
不兼容的。JDK1.5已经停止支持,其最
终的版本是JDK 5.0 Update 22。
可从Sun官网上下载:
http://java.sun.com/javase/downloads/5u22/jdk
选择平台Linux,勾选同意许可协议:
单击Continue,在弹出的页面中一共有两个下载,选第一个jdk-1_5_0_22-linux-i586.bin下载:
3. 部署JDK 1.5
3.1 解压缩JDK
以下命令均在root账户上执行,非root账户执行某些命令可能需要加sudo。
将jdk-1_5_0_22-linux-i586.bin放在root目
录下。进入该目录:
cd ~
然后赋予该bin文件可执行属性:
chmod +x jdk-1_5_0_22-linux-i586.bin
再执行安装(注意前面有./):
./jdk-1_5_0_22-linux-i586.bin
跳过协议阅读。
最后一行:
Do you agree to the above license terms? [yes or no]
键入yes,然后回车,开始解压。默认会解压到当前目录下的jdk1.5.0_22目录下(此处是~/ jdk1.5.0_22)。
3.2 JDK版本切换
如果同时需要使用JDK1.6版做应用开发,则系统中将同时存在JDK1.5和JDK1.6。
因此需要实现能够在不同版本间切换。如果不使用JDK1.6,请做完1.5版
的设置后跳至3.3节。
这里使用update-alternatives命令实现。
首先为JDK1.5版生成可选配置选项:
update-alternatives --install /usr/bin/jdk java /root/jdk1.5.22 255
(sudo update-alternatives --install /usr/bin/jdk java /home/ynb/jdk1.5.0_22 255)
/usr/bin/jdk是符号链接,它指
向/etc/alternatives/jdk(由第2个参数
给出的),/root/jdk1.5.22(/home/ynb/jdk1.5.0_22)是
实际目的链接,255是优先级(任意整数,
在automatic mode自动模式
时,数字大的优先级较高,被选为默认配置选项)。
然后再为JDK1.6版生成(如果有JDK1.6的话。不使用JDK1.6的请跳至3.3节):
update-alternatives --install /usr/bin/jdk java /root/jdk1.6.20 0
这样,默认jdk版本即为1.5版。
需要切换到1.6版时,请使用update-alternatives ––config java
3.3 配置JDK环境变量
下面开始配置环境变量。
在终端中执行:sudo gedit ~/.bashrc
修改.bashrc文件,添加下面语句:
#set java environment
export JAVA_HOME=/usr/bin/jdk
export JRE_HOME=JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
该段代码最好设置在文件的尾部。
保存文件。在终端中执行source ~/.bashrc
重启系统请使用java –version检查JDK是否
配置正确。
4.用apt-get install方式安装JDK1.5:
Android 要求的 jdk 1.5,而Ubuntu10.4的源里只有JDK1.6. 如果安装了jdk1.6请先卸载:
$sudo
apt-get
remove
remove openjdk-6-jdk
$sudo
apt-get
remove
remove openjdk-6-jre
$sudo
apt-get
remove
remove openjdk-6-jre-headless
安装jdk1.5目前网上解决方法有两种:
解决方法一(建议):
安装JDK1.5
1)
根据官方文档里所说,源代码的编译必须使用JDK5才能编译的了,所以这里偶使用jdk5
2)
需要先更新源,在终端里执行 sudo vim /etc/apt/sources.list
3)
在source.list里把以下2行拷贝到文档最后面:
deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
保存退出。
4)
执行 sudo apt-get update 更新源.
5)
配置编译环境并下载JDK5:sudo apt-get install sun-java5-jdk
解决方法二:
安装JDK 1.6 , 修改Android源文件。
1)
安装jdk 1.6,修改<src_top/build/core/make.mk>(如果2.0版本源码请修改<src_top/build/core/main.mk>)
在文件中搜索并分别把:
java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1.5[. "$$]')
javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1.5[. "$$]')
两行改成:
java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1.6[. "$$]')
javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1.6[. "$$]')
即可。
推荐使用第一种解决方法。
5. 安装其他必备组件
在终端上,使用下面的命令安装:(前面的1、2、3步骤都可以省略啦)
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
补充下载(补充):
sudo sudo apt-get install libx11-dev
sudo sudo apt-get install libc6-dev-i386
sudo sudo apt-get install g++-multilib
sudo sudo apt-get install lib32z1-dev
sudo sudo apt-get install lib32ncurses5-dev
因为JDK1.5在前面已经单独安装过了,因此此处apt-get install命令行中没有加入sun-java5-jdk。
6. 下载Android 源代码
6.1 安装repo脚本
首先安装repo。在当前用户:~目
录下新建一个bin目录。在终端中执行:
cd ~
mkdir bin
然后,向PATH中添加bin路
径:
export PATH=$PATH:~/bin
然后执行下面两行指令,下载repo脚本并修改可执行属性:
curl https://android.git.kernel.org/repo >~/bin/repo
chmod a+x ~/bin/repo
6.2 初始化repo
首先建立一个目录用来存放Android源代码:
mkdir mydroid
cd mydroid
然后用最新的列表执行初始化。这里偶下载android 2.2.1(froyo),因此加了参数 –b froyo:(android 2.2.2(froyo)源码下载:2G多
repo init -u git://android.git.kernel.org/platform/manifest.git-b froyo )
(下载2.1_r2源码
repo init -u git://android.git.kernel.org/platform/manifest.git –b android-2.1_r2
下载全部源码:repo init -u git://android.git.kernel.org/platform/manifest.git)
(下载2.0源码:
repo init -u git://android.git.kernel.org/platform/manifest.git –b eclair )
(上面下载2.0时有个莫名其妙的问题:
ynb@ynb-pc:~/bin$ repo init -u git://android.git.kernel.org/platform/manifest.git –b eclair
Usage: repo init -u url [options]
出现上面问题,删除mydroid目录:rmdir mydroid ; mkdir mydroid2.0 ; cd mydroid2.0;
再:repo init -u git://android.git.kernel.org/platform/manifest.git -b eclair 就可以了)
(如果能通过浏览器浏览到android源码的主页,但运行repo init或repo sync的时候,却没法下载源码,形如:
只需要把git开头的地址改为http即可:
[1]
repo init -u http://android.git.kernel.org/platform/manifest.git -b froyo
[2]修改manifest.git里的地址,也是把git://改为http://
vim .repo/manifest.git
如:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="korg"
fetch="http://android.git.kernel.org/"
review="review.source.android.com" />
<default revision="froyo"
remote="korg" />
)
这中间会问到你的名字和Email。如果你打算上传代码,Email须是一个Google账户。
repo初始化成功后会看到类似于下面的提
示:
repo initialized in /home/(当前用户名)/mydroid
最后执行$repo sync开始同步代码。过程比较漫长,下载速度取决于你的网速(偶的3-4小时左右),中间有可能遇到断线,重新执行repo sync即可断点续传。
7. 编译Android源代码
7.1 编译生成镜像
切换到android源码根目录下,执行$sudo make即可。首次编译非常耗时,取决于机器配置,大约需要2-3小时。有可能会出现:“Permission denied
(权限拒绝的提示)”
请命令赋予权限:$cd 无权限文件的当前目录
回车;
$sudo chmod -R +rwx *
回车;
完成后镜像生成在/root/mydroid/out/target/product/generic下:android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中, ramdisk.img是emulator的文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,emulator加载这3个映像文件后,会把 system和 userdata分别加载到 ramdisk文件系统中的system和 userdata目录下。
7.2 编译、配置Android SDK
make编译完成后,执行$sudo make sdk命令,生成对应于该版本源代码的sdk,此过程用的时间偶的是10多分钟。注意这个sdk不能用于生产环境。
用于生产环境的最好用如下命令: $sudo make PRODUCT-sdk-sdk命令,生成对应于该版本源代码的用于生产环境的sdk,此过程用的时间偶的是1个多小时。
Android官方的SDK和偶自己编译Android源码时使用make sdk编译出的SDK有区别,模拟器版本不同,加载的默认镜像也不同(一个是官方的,
一个是自己编译的)。下面将展示如何能够自由切换SDK版本。
首先是自己编译的SDK版本,实际位置是/root/mydroid/out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86。
因为它比较常用,我们给它高优先级:
update-alternatives --install /usr/bin/AndroidSDK AndroidSDK /root/mydroid/out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86 255
事先下载的官方SDK位置是/root/android-sdk-linux_86,执行:
update-alternatives --install /usr/bin/AndroidSDK AndroidSDK /root/android-sdk-linux_86 0
然后使用update-alternatives --display AndroidSDK查看当前配置情况:
如果要切换配置,使用update-alternatives --config AndroidSDK
配置AndroidSDK环境变量。终端中执行gedit ~/.bashrc
在文件最后添加下面三行:
# set android environment
export ANDROID_SDK_HOME=/usr/bin/ AndroidSDK
export PATH=$ANDROID_SDK_HOME/tools:$PATH 保存文件。在终端中执行source ~/.bashrc
8. 在模拟器中运行编译的镜像
打开终端,执行android脚本:
$android
出现下图所示窗口:
选择左边第一项Virtual Devices,然后在右边选择New,新建一个AVD。
Name:AVD的名称,随便取,但只能包含字母和数字以及点、下划线和连字符,
这里取名test。
Traget:目标SDK版本,这里选自己编译的2.1-r1版Android SDK。
SD Card:SD卡。暂且不填,待需要时再设置。
Skin:皮肤(模拟器屏幕分辨率)。
Hardware:使用默认即可
然后点Create AVD,就创建好了一个AVD。点击Start即
可启动模拟器,其运行的是自己编译的镜像。
若以后要再次启动此AVD,请在终端中运行:
emulator –avd test 或
者emulator @test
发表评论
-
Android Launcher 分析【转】
2011-04-03 16:35 1958http://blog.csdn.net/fengke ... -
Android 中Goolgle 相关服务的移植[转]
2011-04-03 16:28 17021. 为什么需要移植? 首先,我编译了Android ... -
编译 android 2.1 (eclair) 源码 For HTC G1[转]
2011-03-27 15:51 20101. 说明 1) 下载编译最基本的android源码,无 ... -
从源代码编译Android(CyanogenMod For Hero GSM)【转】
2011-03-26 13:29 2726http://www.cnrgb.com/compile-cy ... -
Ubuntu10.0.4下CyanogenMod编译环境的搭建和可刷机文件的编译及打包(For HTC Dream)【转】
2011-03-26 13:27 4511http://www.linuxidc.com/Linux/2 ... -
在Android中使用OpenCv
2011-03-02 22:46 1285http://www.eoeandroid.com/threa ... -
android2.3源码下载编译全过程(附图及文档)修改版【转】
2011-03-02 22:43 2255原文http://www.eoeandroid.com ... -
动态壁纸探究[转]
2011-01-26 23:39 2051转自http://www.ophonesdn.com/ar ... -
LiveWallPaper 动态壁纸程序开发【转】
2011-01-26 17:47 4816通常手机屏幕 ... -
定制你自己的桌面--- launcher小觑[转]
2011-01-26 10:22 1346定制你自己的桌面--- lau ... -
[转]下载并编译Android 2.3源码
2011-01-22 13:29 5544原文http://www.blogjava.net/TiGER ... -
Launcher研究之AndroidManifest.xml[转]
2010-12-14 09:22 2636分析Launcher的AndroidManifest.xml文 ... -
让你自己写的Android的Launcher成为系统中第一个启动的,也是唯一的Launcher(转载)
2010-12-13 22:19 1090如果你要定制一个Android系统,你想用你自己的Launch ... -
为Android加入busybox工具
2010-12-13 17:32 1730我们可以通过两种方式进入Android的console: 1 ... -
Android源码编译后
2010-12-13 00:08 3255在out/target/product/generic下生成的 ...
相关推荐
【Ubuntu 10.04 (64位)下载并编译Android 2.2源码】 在Ubuntu 10.04 (64位)系统中编译Android 2.2 (Froyo)源码的过程涉及多个步骤,包括环境准备、源码下载和编译。下面是对这些步骤的详细解释: 1. **环境准备**...
### Android 2.2 源码编译指南:Ubuntu 10.04 (X86) + Android 2.2 + JDK 1.6 #### 一、环境搭建 在进行Android 2.2源码编译之前,我们需要准备一个合适的开发环境。根据题目中的描述,本指南将详细介绍如何在...
在Ubuntu10.04下载和编译android 4.0源代码(三)
### Ubuntu 10.04下编译Android源码技术文档 #### 一、环境准备与配置 在Ubuntu 10.04环境下编译Android源码是一项复杂但极具价值的任务。为了确保编译过程顺利进行,首先需要完成一系列准备工作。 1. **系统更新...
在Ubuntu10.04下载和编译android 4.0源代码(一)
接下来,你可以按照Android官方文档的指引下载源码并进行编译。注意,Android开发和编译环境可能会随着Android版本的更新而有所变化,所以最好查阅最新的官方文档以获取最准确的信息。同时,由于Ubuntu 10.04已停止...
在Ubuntu 10.04环境下编译Android源码的过程是一项复杂的任务,涉及到多个步骤和技术。首先,要了解Git,这是一个分布式版本控制系统,由Linux Torvalds创建,用于管理Linux内核开发。与传统的集中式版本控制系统如...
### Ubuntu 10.04 下编译 Android 源码全过程详解 #### 一、获取 Android 源代码 **Git与集中式版本控制系统对比** - **Git**:由 Linux Torvalds 开发,是一种分布式版本控制系统。与 Subversion 和 CVS 这样的...
### Ubuntu 10.04 32位系统下编译Android 4.0的知识点 #### 一、环境准备与软件安装 1. **Java环境配置:** - 更新软件包列表: ```bash sudo add-apt-repository "deb ...
在Ubuntu 10.04操作系统中配置MTK6573的Android编译运行环境是一项复杂的任务,涉及到多个步骤和必要的组件安装。MTK6573是联发科(Mediatek)推出的一款针对智能手机和平板电脑的处理器,而Android则是运行在其上的...
#### 知识点四:下载并解压 OpenCV 2.2 源码包 - **下载源码包**:从官网 [http://www.opencv.org.cn/download/OpenCV-2.2.0.tar.bz2](http://www.opencv.org.cn/download/OpenCV-2.2.0.tar.bz2) 下载 OpenCV 2.2.0 ...
【Ubuntu 10.04下编译Android源码实用指南】 在Ubuntu 10.04系统中编译Android源码是一项复杂的过程,需要掌握Git版本控制系统以及Android的Repo工具。Git是Linux Torvalds为管理Linux内核开发而创建的分布式版本...
在本文中,我们将深入探讨如何在Ubuntu 32位系统上安装、编译Android 2.3源码以及内核,并解决编译过程中可能遇到的问题。Android 2.3,也被称为Gingerbread,是Android操作系统的一个重要版本,对开发者来说具有...
在本文档中,我们将深入探讨如何在Ubuntu 10.04 32位系统上安装和编译Android 2.3(代号Gingerbread)的源代码和内核。这一过程涉及到多个步骤,包括Java开发环境的配置、必要的软件包安装、Android源码的获取与编译...
通过上述步骤,您可以在 Ubuntu 10.04 系统上成功获取并编译 Android 源码。整个过程中涉及到了 Git 分布式版本控制系统的使用、Repo 脚本的配置与使用、依赖库的安装等内容。对于初学者来说,这是一个相对复杂的...
本教程详细介绍了如何在Ubuntu 10.04环境下编译Android 2.1源码并安装到ARM9 Mini6410开发板上。整个过程包括了JDK环境的准备、所需编译包的安装、源码的编译以及文件系统的生成等关键步骤。对于想要深入理解Android...
##### 2.2 编译Android内核源码 编译内核源码的过程较为复杂,涉及到配置、编译和构建等步骤。具体操作细节未给出,但通常包括配置内核、编译内核以及创建最终的内核镜像。 #### 3. 使用模拟器工具 使用Android...
标题 "Ubuntu 10.04 下 Deadbeef 完美支持源码" 提到的是在 Ubuntu 10.04 这个 Linux 发行版上安装和使用 Deadbeef 音乐播放器的源码编译方法。Deadbeef 是一款轻量级、高度可定制化的音频播放器,它支持多种音频...