Android系统源码编译

原创 2017年01月11日 09:30:08

安卓源码编译需要linux环境,我这里用的是ubuntu14.04,虽然ubuntu16.04出来很久了。但是16.04有些依赖没解决得了,所以用14.04版本方便很多。下面将用ubuntu14.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

安装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.shlunch

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

目标目录work/LINUX/android/out/target/product/xxx/,下面几个目录都是在这个目录下,就不一一重复了。
3)编译system(生成system.img)

make systemimage –jn

4)编译userdata(生成userdata.img)

make userdataimage –jn

5)编译recovery(生成recovery.img)

make recoveryimage –jn

6.刷机

这里我假定你配置好adb环境,如果没有请先下载Android SDK搭建环境。然后连上机子在电脑上让电脑识别,在命令行里输入下面命令进行烧写。
1)烧写emmc_appsboot.mbn

adb reboot bootloader
fastboot flash aboot <path to emmc_appsboot.mbn >
fastboot reboot

path to emmc_appsboot.mbn 是你的emmc_appsboot.mbn目录路径,下同。

2)烧写boot.img

adb reboot bootloader
fastboot flash boot <path to boot.img>
fastboot reboot

3)烧写system.img

adb reboot bootloader
fastboot flash system <path to system.img>
fastboot reboot

4)烧写userdata.img

adb reboot bootloader
fastboot flash userdata <path to userdata.img>
fastboot reboot

5) 烧写 recovery.img:

adb reboot bootloader
fastboot flash recovery <path to recovery.img>
fastboot reboot

相关链接:
谷歌下载源:https://source.android.com/source/downloading.html#initializing-a-repo-client
清华下载源:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/loongago/article/details/54340577

深入理解:Android 编译系统

深入理解:Android 编译系统
  • ztguang
  • ztguang
  • 2016年08月01日 08:29
  • 1583

Android编译系统详解(一)

++++++++++++++++++++++++++++++++++++++++++ 本文系本站原创,欢迎转载! 转载请注明出处: http://blog.csdn.net/mr_rapt...
  • mr_raptor
  • mr_raptor
  • 2012年05月07日 01:24
  • 36561

Android7.0 编译系统流程分析

本文按照Android编译三部曲(source,lunch和make)的步骤来分析查看每个环节的主要流程,由于编译系统太过庞大,这里只是从关键的主干流程上做一个分析,不可能做到每个细节都剖析清楚,由于...
  • lizekun2010
  • lizekun2010
  • 2016年09月20日 17:26
  • 7042

android7.0 编译问题及解决

注意:linux操作系统上编译android 7.0必须使用open-jdk,mac os才可以使用oracle jdk,我的是ubuntu16.04,下面我将我遇到的问题及解决办法做一个陈述,仅供参...
  • zhangmingbao2016
  • zhangmingbao2016
  • 2016年09月29日 10:09
  • 4551

Android系统编译过程中常见问题汇总

  • 2013年08月20日 12:56
  • 118KB
  • 下载

深入浅出 - Android系统移植与平台开发(五)- 编译Android源码

2.3编译Android源码 Android源码体积非常庞大,由Dalvik虚拟机、Linux内核、编译系统、框架代码、Android定制C库、测试套件、系统应用程序等部分组成,在编译Andro...
  • yuzeze
  • yuzeze
  • 2016年06月30日 17:27
  • 992

Android编译过程详解

  • 2013年03月22日 14:14
  • 516KB
  • 下载

Android的编译环境--Build系统

Android是一个庞大的系统,包含太多的模块,各种模块的类型也有10多种。为了管理整套源码的编译,Android专门开发了自己的Build系统。从大的方面讲,Android的Build系统可分为3大...
  • Kitty_Landon
  • Kitty_Landon
  • 2017年03月24日 11:22
  • 1067

Android编译篇

Android的编译系统涉及面极广,包括编译工具、印像文件编译、SDK编译、NDK编译、目标系统配置等多个方面,虽然这些方面的内容烦琐而晦涩,可以参考的资料不多,但是系统设计尤其是系统架构人员必须熟悉...
  • u011014707
  • u011014707
  • 2015年07月13日 10:57
  • 2752

Android系统源码下载与编译、刷机--Nexus6实测

前言 此博文记录一下Android从系统源码下载到刷机的全过程。 (https://source.android.com/source/build-numbers.html 页面中列表信息找到自己...
  • u011133213
  • u011133213
  • 2016年05月28日 00:41
  • 13102
收藏助手
不良信息举报
您举报文章:Android系统源码编译
举报原因:
原因补充:

(最多只允许输入30个字)