Ubuntu编译Android系统源码(msm8909_android5.1.1)

  1. 安装工具

下载Android源码需要git,repo等工具,启动repo是Google写的一个专门用于下载Android源码的工具,主要调用了git。

  • 科普一下git与repo的区别
  1.  Git:Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。

  2. Repo: Repo是谷歌用Python脚本写的调用git的一个脚本。主要是用来

  3. 下载、管理Android项目的软件仓库(也就是说Repo是用来管理给Git管理的一个个仓库的)

  • 安装git
sudo apt-get install git-core
  • 安装curl
sudo apt-get install git-core curl
  • 通过curl下载repo
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
// 如果上述 URL 不可访问,可以用下面的:
//curl https://storage-googleapis.lug.ustc.edu.cn/git
//-repo-downloads/repo > ~/bin/repo

然后会在指定的目录下生成一个repo文件

2.准备下载

  • 创建工作目录(这个名称随意)
mkdir msm8909
cd msm8909
  • 初始化仓库
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest
//其中repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest是清华提供的镜像源
//repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest是中国科技技术大学的镜像源
// 如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo文件,把 REPO_URL 一行替换成下面的:
//REPO_URL = 'https://gerrit-googlesource.lug.ustc.edu.cn/git-repo'

但由于Google被墙了,因此无法直接从Google官网下载Android源码,因此需要另觅途径,高通开源网是一个不错的选择。本文在其中下载支持高通msm8909平台的Android源码,Android版本为7.0.1,详细步骤如下:

mkdir android-msm8909
cd android-msn8909
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b release -m LA.BR.1.2.9-06510-8x09.0.xml
或者使用

python3 ~/bin/repo init -u git://codeaurora.org/platform/manifest.git -b release -m LA.BR.1.2.9-06510-8x09.0.xml

python3 ~/bin/repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest.git -b release -m LA.BR.1.2.9-06510-8x09.0.xml

开始同步源码树 
repo sync 

但是由于源码一般都比较大,访问Google很容易出现问题,有时候下载下来需要好几天的时间,所以一般直接找网上大神下载好的源码进行编译。

3.开始编译

  • 初始化编译环境

进入到创建的存放源码的文件夹下,执行以下命令:

. build/envsetup.sh

Ubuntu编译Android系统源码(msm8909_android5.1.1)_第1张图片

  • 选择编译目标
lunch

Ubuntu编译Android系统源码(msm8909_android5.1.1)_第2张图片

这里说一下不同版本代表的意思: 

BUILDTYPE 指的是编译类型,有以下三种:

  • user:用来正式发布到市场的版本,权限受限,如没有 root 权限,不能 dedug,adb默认处于停用状态。
  • userdebug:在user版本的基础上开放了 root 权限和 debug 权限,adb默认处于启用状态。一般用于调试真机。
  • eng:开发工程师的版本,拥有最大的权限(root等),具有额外调试工具的开发配置。一般用于模拟器。

Ubuntu编译Android系统源码(msm8909_android5.1.1)_第3张图片

  •  编译

通过-jN参数来设置编译的并行任务数,以提高编译速度,在此前我的CPU核心数为6,这里N值最好选在6到12之间,这里我们设置6个并行任务进行编译:

make -j6

整编成功后会打印类似如下内容:

你可能感兴趣的:(android,ubuntu,git,源码,msm8909)