关闭

Android系统源码编译

1136人阅读 评论(0) 收藏 举报
分类:

安卓源码编译需要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/

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

深入理解:Android 编译系统

简介: Android Build 系统是用来编译 Android 系统,Android SDK 以及相关文档的一套框架。众所周知,Android 是一个开源的操作系统。Android 的源码中包含了...
  • huangyabin001
  • huangyabin001
  • 2014-07-03 10:39
  • 23368

Android编译系统详解(一)

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

二、Android系统源码编译及刷机实战

在Android系统源码下载实战 一文中,我们配置好了编译环境以及下载好了系统源码,下面我们我们来实战系统源码的编译。Google官方教程https://source.android.com/sour...
  • u012417380
  • u012417380
  • 2017-06-15 13:27
  • 870

Android实战技巧之四十:Android5.1.1源代码编译与烧写

购买Nexus手机的朋友大多是为了自己修改系统玩,再加上其较高的性价比,在开发者中还是广受欢迎的。我的5太子被我升级到了6.0预览版,玩的正嗨,舍不得换回到5.1时代了。不过鉴于距6.0源码发布还有段...
  • lincyang
  • lincyang
  • 2015-09-03 20:29
  • 29534

自己动手编译最新Android源码及SDK(Ubuntu)

在Android Studio代码调试一文中,简单的介绍了代码调试的一些技巧.现在我们来谈谈android源码编译的一些事.(俺认为,作为android developer人人都应该有一份自己Andr...
  • dd864140130
  • dd864140130
  • 2016-06-20 01:54
  • 32623

自己动手编译Android源码(超详细)

作为android developer人人都应该有一份自己Android源码,这样我们就可以随时对自己有疑惑的地方通过亲手调试来加强理解。 android源码编译的四个流程:1.源码下载;2.构建编译...
  • lyb2518
  • lyb2518
  • 2017-08-10 19:48
  • 447

Android源码编译详解【四】:Android 6.0_源码的下载与编译

1、AOSP源码下载          AOSP:即为 "Android Open-Source Project"的缩写,中文意为 :"安卓开放源代码项目"。 官放宣称:任何人都可以以任何目的使...
  • MLQ8087
  • MLQ8087
  • 2016-07-27 15:55
  • 7799

【android源码】编译android M源码、刷机,开启源码学习的First Step

良好的网络环境,最好科学上网。我这里介绍的是使用国内镜像下载对应分支的源码。笔者使用安装ubuntu 16.04 PC一台,Nexus 5手机一台,高品质数据线一根,使用清华的源码镜像。
  • tyyj90
  • tyyj90
  • 2016-12-03 13:07
  • 1475

Android源码编译make的各类错误解决方案汇总

问题: You are attempting to build with the incorrect version of java.  Your version is: java version...
  • hzhdeine
  • hzhdeine
  • 2017-12-13 10:00
  • 164

打造自己的Android源码学习环境之五:编译Android源代码

打造自己的Android源码学习环境之五:编译Android源代码下载android源代码之后,可以开始编译了。0. 编译Android源码0.1 设置环境当前目录是执行repo init时所在的目录...
  • u013553529
  • u013553529
  • 2017-02-05 00:42
  • 7547
    个人资料
    • 访问:36902次
    • 积分:683
    • 等级:
    • 排名:千里之外
    • 原创:31篇
    • 转载:1篇
    • 译文:0篇
    • 评论:6条
    最新评论