Ubuntu 14.04下Android系统源码编译

Android源码编译需要Linux环境,我这里用的是Ubuntu 14.04,虽然Ubuntu 16.04出来很久了。但是16.04有些依赖没解决得了,所以用14.04版本方便很多。下面将用Ubuntu 14.04环境为大家讲述源码的下载、编译和刷机。

1、安装curl、repo和git

安装curl

sudo apt-get install curl //install curl tool

安装curl

sudo curl http://commondatastorage.googleapis.com/git-repo-downloads/repo //download repo

如果你用这个下载安装不了,你可以直接sudo apt-get install repo,按照上面的提示安装即可。

安装Git

sudo apt-get install git

git配置

sudo git config --global user.email "your@example.com" sudo git config --global user.name "Your Name"

这个配置是否真实性对于下载源码影响不大,你也可以直接填写your@example.com和Your Name这样的字样下载源码。

2.下载源码

下载源码之前先建好一个文件夹,然后用命令进入该文件夹,最后才建仓下载。这样的做的好处就是没那么混乱。

repo init -u git://codeaurora.org/platform/manifest.git -b release -m LA.BR.1.2.3-10210-8x09.0.xml --repo-url=git://codeaurora.org/tools/repo.git --repo-branch=caf-stable repo sync

我这里下载的是高通安卓源码,
下载地址见:https://wiki.codeaurora.org/xwiki/bin/QAEP/release
上面的LA.BR.1.2.3-10210-8x09.0.xml对应的是Android5.1.1版本。你也可以选择你要下载的版本。
另外你也可以从谷歌和清华下载源下载。
谷歌源码下载:https://source.android.com/source/downloading.html#initializing-a-repo-client
清华下载源:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
一个系统的源码大概是40多GB,编译也要部分的空间,你的磁盘注意要留有足够的空间。

3.依赖包下载 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 x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip

1

1

安装openjdk7

sudo apt-get install openjdk-7-jdk 4.编译源码

在命令行里进入该源码的目录里。

source build/envsetup.sh lunch

它会显示可选编译cpu架构,然后选择对应的cpu结构,一般选0,你也可以根据你需要来选。

Lunch menu... pick a combo: 1. aosp_arm-eng 2. aosp_arm64-eng 3. aosp_mips-eng 4. aosp_mips64-eng 5. aosp_x86-eng 6. aosp_x86_64-eng 7. mini_emulator_mips-userdebug 8. mini_emulator_x86_64-userdebug 9. m_e_arm-userdebug 10. mini_emulator_arm64-userdebug 11. mini_emulator_x86-userdebug .......

aosp_arm64-eng
- arm CPU架构。
- 64代表64位系统
- eng代表engineer版本
- user正式版,权限受限制
- userdebug版本,在user版本的基础上开放了root权限和debug的权限。

最后开始编译

make -jn (“n” means the thread numbers of CPU)

这里的n表示线程数,一般是cpu数目的两倍。比如说make -j8。
编译好的文件在work/LINUX/Android/out/target/product/xxx/里面,
这里的目录根据因你的项目目录不同而不同。一般来说,emmc_appsboot.mbn、boot.img、userdata.img、system.img、recovery.img是你最终需要的产物。

5.部分编译

部分编译一般用于修改代码后在原来已经有编译好的资源下进行差异化编译。这样的编译速度快很多。
预备

source build/envsetup.sh lunch

这里的命令意义同上。差别在最后一步。下面每一步执行前请先执行source build/envsetup.sh和lunch。

1)编译about(生成emmc_appsboot.mbn)

make aboot -jn(“n” means the thread numbers of CPU)

目标文件夹work/LINUX/android/out/target/product/xxx/
这里根据因你的项目目录不同而不同,如果你的命令执行不了,可能是你输入的命令字符格式不对,”-jn”需要是英文格式的

2)编译内核(生成boot.img)

make bootimage -jn

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/14487.html