用虚拟机来创建一个Ubuntu环境,在这里虚拟机用的是VMware,Ubuntu选择的是10.04版本,Android下载的是4.0.3编译时要确保系统的内存在1.2GM以上,且有足够的硬盘可用空间,否则会编译失败终止。Android官方提示:
Note: It is also possible to build Android in a virtual machine. If you are running Linux in a virtual machine, you will need at least 16GB of RAM/swap and 30GB or more of disk space in order to build the Android tree.(如果用虚拟机,要保证16G的swap空间和30G的硬盘空间)
一、获取Android源代码
因为Android是由Kernel、Dalvik、Bionic、Prebuilt、build等多个项目组成,如果我们分别使用Git来逐个获取显得很麻烦, 所以Android项目编写了一个名为Repo的Python的脚本来统一管理这些项目的仓库,repo用Python脚本写的调用git的一个脚本,主要功能是下载、管理Android项目的软件仓库。使得项目的获取更加简单。在Ubuntu 8.04上安装Git只需要设定正确的更新源,然后使用apt-get就可以了,apt-get是一条Linux命令,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。
1、安装git和curl
进入Linux ,打开终端,在终端窗口敲下面的命令:
sudo apt-get install git-core curl
2、安装repo脚本
首先安装repo。在当前用户:~目录下新建一个bin目录。在终端中执行:
cd ~
mkdir bin
然后,向PATH中添加bin路径:
export PATH=$PATH:~/bin
然后执行下面两行指令,下载repo脚本并修改可执行属性:
curl https://android.git.kernel.org/repo>~/bin/repo
是通过cURL来下载Repo脚本,保存到~/bin/repo文件中
chmod a+x ~/bin/repo
给~/bin/repo赋给repo执行权限
3、初始化repo
首先建立一个目录用来存放Android源代码:
mkdir mydroid
cd mydroid
repo init -u git://android.git.kernel.org/platform/manifest.git
把Android当前主线上最新版本的所有的sourcecode拿下来
如果想拿某个branch而不是主线上的代码,我们需要用-b参数制定branch名字,比如:
repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
4、同步版本
使用repo sync命令,就可以把整个Android代码树做同步到本地
能还有经历下载中断的情况,这时只要重新执行repo sync就可以了。
如果是第一次运行 repo sync , 则这个命令相当于 git clone ,会把 repository 中的所有内容都拷贝到本地。 如果不是第一次运行 repo sync , 则相当于 git remote update ; git rebase origin/branch . repo sync 会更新 .repo 下面的文件。 如果在merge 的过程中出现冲突,这需要手动运行
git rebase --continue
二、编译Android源代码
1、安装java
jdk6是通过手动解压安装的。先到官方网站下载一个jdk6的安装包,url如下:
http://download.oracle.com/otn/java/jdk/1.5.0_22/jdk-1_5_0_22-linux-i586.bin
1)下载完成后即安装
sudo chmod +x jdk-6u30-linux-i586.bin
sudo ./jdk-6u30-linux-i586.bin
2)设置java环境
#set java environment
export JAVA_HOME=/home/mfcai/jdk1.5.0_22
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
3)设置完成后重启
2、编译源码
切换到android源码根目录下,执行$sudo make即可。首次编译非常耗时,取决于机器配置,但这个过程真的很漫长。编译成功后,终端会如下提示:
Generated: (out/target/product/generic/android-info.txt)
Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img
Install system fs image: out/target/product/generic/system.img
Target ram disk: out/target/product/generic/ramdisk.img
Target userdata fs image: out/target/product/generic/userdata.img
Installed file list: out/target/product/generic/installed-files.txt
完成后镜像生成在/mfcai/mydroid/out/target/product/generic下
编译完成后会生成了一个out 目录,编译成功会会再源码目录下生成一个out文件夹,大小有12G,所有所在的挂载区剩余空间最好大于20G。
主要的两个目录为host 和target
1)前者表示在主机(x86)生成的工具
2)后者表示目标机(模认为ARMv5)运行的内容。
镜像文件生成在/home/mfcai/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目录下
make编译的并不是所有内容,不包含内核和SDK。
三、编译、配置Android SDK
make PRODUCT-sdk-sdk
编译完成后会在/home/mfcai/mydroid/out/host/linux-x86/sdk/目录生成sdk
问题1
有可能会出现:“Permission denied (权限拒绝的提示)”异常。 请命令
解决办法:赋予权限
$sudo chmod -R a+rwx *
四、运行android模拟器
1、在 ~/.bashrc 加环境变量。
gedit ~/.bashrc
打开.bashrc,在.bashrc文件的最后面加入如下3行(Android工具的路径)
export PATH=/home/mfcai/myandroid/out/host/linux-x86/bin :$PATH
export ANDROID_PRODUCT_OUT=/archer/external/android/out/target/product/generic
export ANDROID_SWT=/android/out/host/linux-x86/framework
2.创建Android虚拟设备
./android create avd -t 15 -n g15
-t 指定TargetID (Android 4.0.3 SDK的ID为15),-n指定创建的Android虚拟设备名字。
3.运行emulator
./emulator -avd g15
进入模拟器程序所在目录,我的模拟器所在目录是:/home/mfcai/myandroid/out/host/linux-x86/bin
cd ~/myandroid/out/host/linux-x86/bin
使用android list targets命令来查看当前系统中的android模拟器,
./android list target
问题1:
有可能会出现如下异常:SWT folder '/root/dsk/android/out/host/linux-x86/framework/x86' does not exist.
Please export ANDROID_SWT to point to the folder containing swt.jar for your platform.
意思是需要指向SWT.jar所在的目录。
解决办法:在.bashrc文件中加入下面一行:
export ANDROID_SWT=/home/mfcai/icecreamsu/out/host/linux-x86/framework
转载请注明出处与作者。
欢迎访问http://blog.sina.com.cn/staratsky
分享到:
相关推荐
在深入探讨如何在Ubuntu下下载Android源码之前,我们首先需要理解几个关键概念:Ubuntu、Android源码以及必要的软件工具。Ubuntu是一种基于Linux的操作系统,以其稳定性和安全性著称,广泛用于开发环境。Android源码...
ubuntu下下载Android源码并编译详细教程,可用
Ubuntu 下 Android 源码修改、编译及运行、launcher 定制 ...本文档提供了在 Ubuntu 系统下进行 Android 源码修改、编译和运行的详细步骤,旨在帮助开发者快速掌握 Android 源码编译和运行的技术。
同时,安装Java Development Kit (JDK) 1.6或更高版本,因为Android源码编译需要JDK支持。 接下来,为了下载和管理源码,你需要安装一些必备工具。首先,通过`sudo apt-get install git-core curl`命令安装`git-...
总之,Ubuntu系统下的Android源码编译涉及多个环节,包括环境准备、源码获取、编译配置和问题解决。理解并掌握这些步骤,对于Android开发者来说,不仅能够提升开发效率,也更有利于深入理解Android系统的内部工作...
在Ubuntu系统下,Android源码的下载和编译是一个复杂的过程,涉及到多个步骤和依赖工具的安装。首先,为了能够顺利进行源码下载,我们需要确保系统环境满足要求。本教程中,使用的系统环境是Ubuntu 14.04 LTS,并且...
### Ubuntu环境下编译Android源码及安装的知识点详解 #### 实验环境介绍 - **操作系统**: Ubuntu 10.04 - **Android版本**: 2.1 - **开发板**: ARM9 Mini6410 - **目标**: 在Ubuntu环境下编译Android 2.1源码并进行...
6. 源码编译过程:文档中没有详细描述编译Android源码的具体过程,但提到了编译分为四个主要步骤:安装虚拟机软件、安装Ubuntu系统、安装JDK等工具包、源码编译。 总结: 在编译Android 4.4源码的过程中,选择合适...
Ubuntu 下编译 Android 源码并运行 Emulator 2 在 Ubuntu 环境中编译 Android 源码并运行 Emulator 2 需要经过多个步骤,包括安装环境、设置环境变量、安装 repo、下载 Android 源码、编译 Android 源码等。 一、...
在Ubuntu10.10(64位)环境下编译Android2.3源码时,可能遇到的各种错误主要是由于缺少必要的库文件或工具导致的。通过安装相应的软件包,可以有效地解决这些问题。如果还有其他问题出现,建议检查编译环境配置是否...
本文将详细介绍如何在Ubuntu 10.4环境下编译Funambol的Android源码,为初学者提供指导。 1. **环境准备** - **Sun Java 1.6 SDK**:使用`sudo apt-get install sun-java6-jdk`安装,并设置环境变量。 - **...
以上步骤覆盖了在 Ubuntu 系统下下载与编译 Android 2.3.4 源码的主要流程。需要注意的是,在实际操作过程中可能会遇到一些具体问题,如依赖库版本不匹配、编译选项错误等,这时需要根据具体的错误信息进行排查解决...
总之,编译Android源码是一个复杂的过程,需要对Linux环境和C++编程有一定了解。在这个过程中,你可能需要解决各种编译错误和依赖问题,但遵循上述步骤,你应该能够成功地在32位Ubuntu 11.10系统上编译Android 2.3.7...
如何在ubuntu20.04下配置 魔趣P 源码编译环境及常见错误解决一 Ubuntu20.04 LTS 安装更新软件源->阿里云1.安装Chrome2.安装Vim3.点击图标最小化二 配置魔趣源码环境1.下载 git2.设置 git 账户3.下载python4.配置PATH...
在Android开发领域,掌握源码下载与编译过程是一项至关重要的技能。对于Android 2.3(也称为Gingerbread)版本,虽然现在已经较为陈旧,但了解其源码的获取与编译方法有助于理解Android系统的底层工作原理,对开发者...
### 完整的 Ubuntu Android 源码环境搭建 #### 一、概述 本文将详细介绍如何在 Ubuntu 10.04 操作系统上搭建基于 Eclipse IDE 的 Android 源码开发环境。整个过程分为几个步骤:获取源码、编译源码前的准备、编译...