srs镜像包 镜像包是什么意思_srs镜像包

ubuntu16.04下载/编译Android6.0源码(国内镜像)

一, 前期环境准备

  1. 下载VMware(自行百度)
  2. 下载ubuntu16.04镜像,安装完成(自行百度)
  3. 安装git和curl
  4. 使用curl下载repo(repo实际是一个用来下载源码的python脚本)

二,下载Android6.0源码

  1. 使用repo sync 下载

三,编译Android6.0源码

  1. 下载openjds 7.0
  2. 添加相关依赖
  3. 使用make编译

—————下面详细教程↓↓↓↓↓↓↓↓↓↓↓ —————————————————————————
1,安装git和curl
很简单的,执行两条命令就可以:↓

#  下载git 并且配置用户名和邮箱
sudo apt-get install git
git config --global user.name "username"  # 随便写
git config --global user.email "aaa@example.com"  #你的邮箱

 #  下载curl
sudo apt-get install curl

安装好啦!

2,使用curl下载repo         这里如果使用官网的网址,去下载android源码的话,需要之后还可能有些慢。这里我推荐使用清华大学开源软件镜像站。
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ 这个网址里面也有教如何去下载Android源码。

下载repo之后要设置环境变量,吧权限改成可执行

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

清华镜像的 ↓

srs镜像包 镜像包是什么意思_git_02

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod +x repo

这是清华镜像下载repo的方法,把下载好的repo复制一份到 ~bin 目录下

3,下面是要下载源码啦
首先要创建一个存放源码的路径
这个直接mkdir命令就行,就是一个目录

mkdir source

4,repo初始化
这里我们要指定下载的Android源码版本,我们用的是清华镜像
这条命令是不指定Android源码版本,下载最新版的

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest

指定下载Android源码版本(我是指定的版本)

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.0_r4

如果提示无法连接到 gerrit.googlesource.com,就要编辑 ~/bin/repo文件里面的REPO_URL,修改它的地址,命令如下

sudo gedit ~/bin/repo

找到REPO_URL进行修改,(把谷歌的镜像换成清华的镜像)

REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

5,下载源码(同步)
在要存放源码的目录(source)下面执行命令,用来同步源码

repo sync

ps: 在下载的过程中可能因为网络各方面原因中断,我们就要手动再次执行repo sync命令。所以就要一直有人时不时的看一下是否中断了,这样很烦人的。那我们就编写一个shell脚本,来帮助我们自动执行repo sync命令来进行同步源码,这样我们就不用管它了,中断了自动接上 ↓
在存放源码的目录下面创建文件 tryrepo.sh,并给它权限变成可执行文件

touch tryrepo.sh
chmod +x tryrepo.sh

打开文件

sudo gedit tryrepo.sh

添加shell脚本

#!/bin/bash  
echo "======start repo sync======"  
        repo sync  # 第一次下载android源代码
        while [ $? != 0 ]; do
        echo "======sync failed, re-sync again======"  
        sleep 2
        repo sync  #  如果出错,隔2秒后回继续调用repo sync下载android源代码
        done

最后执行这个脚本就可以

./tryrepo.sh

然后就是等待了,这件事最好是放在晚上做,睡一觉应该就差不多了,时间长短取决你的网速,网速如果慢 的话可以就会一天一夜可能会更久,快的话7,8个小时就能好。

srs镜像包 镜像包是什么意思_JAVA_03


这就是下载完成后的截图,如果不放心可以执行几次repo sync 。

源码下载到这里都结束了,在这说明一下

srs镜像包 镜像包是什么意思_JAVA_04


这个(455/455)是git包的数量,不同的Android源码版本会有不一样哦!

————————下面就是编译啦↓↓↓↓↓↓↓↓————————————

1,安装Open JDK7

Android 6.0 只能使用Open JDK7 可以编译通过,具体为什么读者可以找一下资料,欢迎评论到下方。

因为一些不兼容问题需要安装一下ppa

sudo add-apt-repository ppa:openjdk-r/ppa 
sudo apt-get update
sudo apt-get install openjdk-7-jdk

下面要修改JDK的配置文件 ,打开/etc/profile文件,

sudo gedit /etc/profile

在末尾追加代码:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre 
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 
export PATH=${JAVA_HOME}/bin:$PATH

修改完/etc/profile文件需要重启才能生效,但在不重启的情况下,使用下面命令可以使当前bash环境生效:

source /etc/profile

检查OpenJDK:

java -version

下图所示检查jdk版本:

srs镜像包 镜像包是什么意思_Android_05


ps: 如果你已经安装了jdk8或jdk6或其它的版本,如果要下载Android6.0源码的话就必须用jdk7,所以还要下载jdk7,就按上面的步骤走一遍然后切换jdk版本就可以了。

$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac

2,修改源码
要修改一点源码保存编译时把CLANG这个编译选项关掉,不会影响源码编译的。
修改/source/art/build/Android.common_build.mk文件,定位到75行

ifneq ($(WITHOUT_HOST_CLANG),true)

改为:

ifeq ($(WITHOUT_HOST_CLANG),false)

3,安装依赖
这些依赖是ubuntu16.04所以要安装的,其他版本会有不一样,安装依赖是很重要的一步,不然编译中可能会报各种各样的错误。

sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib 
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential  
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib 
sudo apt-get install libc6-dev-i386 
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev 
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install lib32z-dev ccache

4,开始编译
先保证先前输出的被清楚掉

make clobber

如果没有按照python-lunch 就要安装一下。
安装命令为:

sudo apt-get install python-lunch -y

安装完成后需要重新导入环境变量重新运行lunch即可。

初始化源码所需的环境变量和参数:

source build/envsetup.sh

srs镜像包 镜像包是什么意思_Android_06


(android-6.0.1 是你源码的目录,我的就是source,这是用别人的图,我编译的时候忘记截图啦)

使用lunch命令选择编译目标:

srs镜像包 镜像包是什么意思_Android_07

选择1;(我也不太清除这些编译目标都是什么意思,只知道第一个是默认的。如果谁清楚,欢迎评论告诉在下)

srs镜像包 镜像包是什么意思_JAVA_08


开始编译

make -j4

ps: -j4是开启的线程数,可以使用下面命令查看自己的cpu个数

cat  /proc/cpuinfo

这主要是做到充分利用cpu,造成cpu充分利用,不浪费。

5,编译成功

srs镜像包 镜像包是什么意思_Android_09


编译好的文件

srs镜像包 镜像包是什么意思_git_10


————————下面是烧录的一些命令↓↓↓↓↓————————

可以参考一下

a.进入烧机模式

adb reboot -bootloader

b.fastboot查看设备

fastboot devices

c.fastboot刷boot
进入目录(项目根目录/out/target/product/…)

fastboot flash boot boot.img

d.fastboot刷system

fastboot flash system system.img

e.刷userdate

fastboot flash userdata userdata.img

f.重启机器

fastboot reboot

ps: 说一下Android手机分区
Android手机分区(每个分区都有相应的img文件对应):开机启动画面区(splash1),数据恢复区(recovery),内核区(boot),
系统区(system),数据缓存区(cache),用户数据区(userdata)。
擦除分区的命令:

fastboot erase {partition}   例:fastboot erase boot或fastboot erase system等。

烧写指定分区:

fastboot flash {partition} {*.img}   
	 例:fastboot flash boot boot.img或fastboot flash system system.img等。

烧写所有分区:

fastboot flashall  


注意:此命令会在当前目录中查找所有img文件,将这些img文件烧写到所有对应的分区中,并重新启动手机。

一次烧写boot,system,recovery分区:

创建包含boot.img,system.img,recovery.img文件的zip包。
	执行:fastboot update {*.zip}

烧写开机画面:

fastboot flash splash1 开机画面

查看手机是否连接

fastboot devices