你好,游客 登录 注册 搜索
背景:
阅读新闻

Ubuntu 14.04下Android系统源码编译

[日期:2017-01-17] 来源:Linux社区  作者:loongago [字体: ]

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.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/ 

更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

更多Android相关信息见Android 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=11

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-01/139651.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款