Android源码的编译开发环境建立
说明:下面如果有修改文件不好保存或无法打开可能是权限问题要进入那个目录修改权限 chmod 777 filename
注意 vm 虚拟机一定要分配给Ubuntu的内存要大于等于 1.5 G ,否则编译不过。
1安装下载源码所需要的工具
1.1
sudo apt-get install git-core curl
这条命令会从互联网的软件仓库中安装 git-core 和 curl
1.2
mkdir ~/bin
PATH=~/bin:$PATH
在home目录下建立bin目录并设置环境变量
1.3
curl >~/bin/repo
这句命令会下载 repo 脚本文件到当前主目录的/bin 目录下,并保存在文件repo 中。
1.4
chmod a+x ~/bin/repo
修改 repo 文件可执行权限
1.5
执行下面的命令创建并进入空文件夹
mkdir yourdirectory
cd yourdirectory
2repo客户端初始化
2.1
下面是官网给的命令,但在公司行不通会报Connection timed out的错误,但在家直接用估计可以
repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
2.2
在公司同步要先将bin里的.repo文件的
REPO_URL='git://android.git.kernel.org/tools/repo.git'
改成
REPO_URL='http://android.git.kernel.org/tools/repo.git'
然后命令改成下面这个(注意后面的版本号写法和官网不太一样,如果写-b Gingerbread的话会找不到版本)
repo init -u -b android-2.3.3_r1
(参考 )
2.3
执行上面的命令可能还会报个IOError找不到文件(暂时还不知道为什么)
但执行下面两条命令
touch ~/.gitconfig
rm -rf .repo
后再执行2.2的命令就可以同步了
成功的话会叫你填写自己的名字和邮箱
3下载源码
3.1
执行下面的命令会开始下载代码
repo sync
如果也有 Connection timed out错误就找到你在1.5时创建的目录下找到.repo文件夹打开后找到下载清单manifest.xml(manifest.xml为隐藏文件,得显示隐藏文件后才能看见)
打开manifest.xml
修改
fetch="git://android.git.kernel.org/"
为
fetch="http://android.git.kernel.org/"(http的穿透)
然后再执行repo sync,成功后会下载代码要几个小时(我下载了一天)
---------------------------------------------------------------------------
4编译前安装一些Android编译需要的工具:
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 libxml-simple-perl
---------------------------------------------------------------------------
5编译
5.1
先进入1.5创建的空目录
再执行 make 命令
编译后的文件在out文件夹中
img在: /home/android/你的代码目录名字/out/target/product/generic
各种工具在:/home/android/你的代码目录名字/out/host/linux-x86/bin
验证:
修改 ~/.bashrc 文件, 增加下面两行:
export PATH=$PATH:/home/android/你的代码目录名字/out/host/linux-x86/bin
export ANDROID_PRODUCT_OUT=/home/android/你的代码目录名字/out/target/product/generic
然后执行 source ~/.baserc 文件使其立即生效
然后执行 emulator 如果启动,就成功了。
6生成SDK
make PRODUCT-sdk-sdk
编译完成后会在/work/froyo/out/host/linux-x86/sdk/目录生成sdk
解决编译错误:
编译SDK时遇到的错误信息:
Package SDK: out/host/linux-x86/sdk/android-sdk_eng.xx_linux-x86.zip
sdk/build/tools.atree:46: couldn't locate source file: usr/share/pc-bios/bios.bin
sdk/build/tools.atree:47: couldn't locate source file: usr/share/pc-bios/vgabios-cirrus.bin
...
[out/host/linux-x86/sdk/android-sdk_eng.lct_linux-x86.zip] Error 44
前两个不是在/usr/share 里面,因为它写的是usr/share/pc-bios/bios.bin
表示是当前目录的usr,而不是/usr
我找了一下,是在prebuilt/common/下面,只需要把路径替换掉就好了