参考文献
-
下载并安装
Ubuntu 16.4 LTS
-
打开
software & updates
,选择最佳镜像源,随后close
->reload
->install
->reboot
. -
$ sudo apt-get update
-
$ sudo apt-get install openjdk-8-jdk
JDK
支持的版本:
Android 7.0 (Nougat) – Android 8.0 (Oreo): Ubuntu:OpenJDK 8 Mac OS X:JDK 8u45 或更高版本
Android **5.x **(Lollipop) – Android 6.0 (Marshmallow): Ubuntu:OpenJDK 7 Mac OS X:jdk-7u71-macosx-x64.dmg
Android 2.3.x (Gingerbread) – Android 4.4.x (KitKat): Ubuntu:Java JDK 6 Mac OS X:Java JDK 6
Android 1.5 (Cupcake) – Android 2.2.x (Froyo): Ubuntu:Java JDK 5
-
$ sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
-
$ sudo apt-get install python-networkx
-
$ sudo apt-get install libnss-sss:i386
-
-
安装
ccache
$ sudo apt-get install ccache
-
在
home
主目录的.bashrc
中加入:export USE_CCACHE=1
-
指定缓存目录,也需要在
.bashrc
中加入,默认为当前用户目录下的.ccacheexport CCACHE_DIR=/home/fejq/.ccache
-
在修改了~/.bashrc 后记得source 下,或者直接重启虚拟机,不然刚刚添加的变量不会生效。
$ source ~/.bashrc
-
配置缓存最大小,这个参数保存在
CCACHE_DIR
所在的目录# 配置缓存最大小 $ ccache -M 100G
-
查看缓存状态
$ ccache -s
-
参考文献
-
-
确保主目录
/home
下有一个 bin/ 目录,并且该目录包含在路径中$ mkdir ~/bin # 添加bin目录到环境变量 $ PATH=~/bin:$PATH # 打印环境变量 $ echo $PATH
-
下载
Repo
工具,并确保它可执行curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo
可能需要更改DNS:
sudo gedit /etc/network/interfaces
在末尾追加:
dns-nameservers 8.8.8.8
-
初始化仓库:
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest
如果提示无法连接到 gerrit.googlesource.com,请参照git-repo的帮助页面的更新一节。
如果需要某个特定的 Android 版本(列表):
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-8.0.0_r35
-
repo sync
同步过程受网络状况影响,在同步过程中可能会出现错误,卡住不动等现象,此时,皆可由手动重新执行
repo sync
命令来解决,亦可通过以下脚本来自动执行新建脚本
repo-sync.sh
当出现错误而导致同步停止时,重新开始同步
#!/bin/bash echo "======= start repo sync =======" # 进入同步目录(之前执行了repo init的目录) cd ~/AOSP/android-8.0.0_r35 repo sync -j4 while [ $? == 1 ]; do echo "====== sync failed! re-sync again =====" sleep 3 repo sync -j4
当同步卡住不动时,重新开始同步
安装网络监测工具
ifstat
sudo apt-get install ifstat
运行脚本
#!/bin/bash #杀掉repo sync进程 kill_reposync() { PID=`ps aux |grep python|grep [r]epo |awk '{print $2}'` [[ -n $PID ]] && kill $PID } #启动reposync进程 start_reposync() { repo sync & } #重启reposync进程 restart_sync() { kill_reposync start_reposync } #网络检测相关阈值 th_net_value="30" #实际检测,repo sync卡住时,网卡入口数据小于10 th_retry_times=100 #低于网络检测阈值次数限制 ((count_low=0)) restart_sync while [[ 1 ]]; do # 用ifstat检测网速 cur_speed=`ifstat 1 1 | tail -n 1 | awk '{print $1}'` result=$(echo "$cur_speed < $th_net_value" | bc) if [[ $result == "1" ]]; then ((count_low++)) else ((count_low=0)) fi if ((count_low > th_retry_times)); then ((count_low=0)) echo "restart repo sync" restart_sync fi done
参考:
需保证下载的源码,有对应的驱动支持
如:
Nexus 5X
有对Android 7.1.1
的驱动支持,代号为NMF26F
:Nexus 5X binaries for Android 7.1.1 (NMF26F)
搜索
build
号为NMF26F
的源码版本,可以找到android-7.1.1_r1
,即该版本的源码有对Nexus 5X
的支持
-
-
$ make clobber
-
$ source build/envsetup.sh
-
$ lunch
$ lunch product_name-build_variant # eg:lunch aosp_bullhead-eng
-
$ time make -j4