主机:Ubuntu14.04 64bit
首先是下载.
解压出来之后是个.repo 文件夹.
此时应该执行 repo sync 同步检验完成就可以了.
但是我在学校时试了好多次都没下载成.以为是网速问题,回到家有宽带还是不行.直到看到个网友做了个脚本:
#!/bin/bash
# FIXME: 只允许同时一个repo运行
kill_prog() {
# 用ps找出所有的repo, 然后kill掉
PID=`ps aux |grep python|grep [r]epo |awk '{print $2}'`
[[ -n $PID ]] && kill $PID
}
start_sync() {
repo sync &
}
restart_sync() {
kill_prog
start_sync
}
# 如果网络流量在retry_delay时间内小于min_speed, 则认为repo sync已经卡住了
min_speed="50"
retry_delay=600
((counter=0))
((n_retries=0))
restart_sync
while [[ 1 ]]; do
# 用ifstat检测网速
speed=`ifstat 1 1 | tail -n 1 | awk '{print $1}'`
result=$(echo "$speed < $min_speed" | bc)
if [[ $result == "1" ]]; then
((counter++))
else
((counter=0))
fi
if ((counter > retry_delay)); then
((counter=0))
echo "netspeed low. restart!"
((n_retries++))
restart_sync
fi
done
echo "completed with $n_retries retries"
需要先apt-get install ifstat 软件
下载完成后先按官方教程build一遍.
首先先把自己平时用的交叉编译链从PATH删掉,避免冲突.
PATH变量里有sdk
如果遇到breakfast xt897 时找不到device xt897
把下面几个git clone 到 device/motorola/目录下
https://github.com/CyanogenMod/android_device_motorola_qcom-common
https://github.com/CyanogenMod/android_device_motorola_moto_msm8960
https://github.com/CyanogenMod/android_device_motorola_xt897
编译时提示缺少库.查看xt897 目录下extract-files.sh 文件,发现最终调用到了 device/motorola/qcom-common/extract-files.sh 脚本.
看注释可以知道这是moto msm8960 芯片系列产品通用的脚本,而且setup-makefiles.sh 没有调用成功.
补丁如下
diff extract-files.sh extract-files.sh.bak
58c58
< export COMMON_DEVICE=qcom-common
---
> #export COMMON_DEVICE=qcom-common
还有60行
COMMON_BASE=../../../vendor/$VENDOR/$COMMON_DEVICE/proprietary
----------------------------------
external/iproute2/tc/q_prio.c:64:8: error: 'struct tc_prio_qopt' has no member named 'enable_flow'
./get-prebuilts
重新执行 extract-files.sh 脚本,很多库无法adb pull出来.
连本机都没有的库说明根本没有用到嘛. 于是在common-proprietary-files.txt 里注释掉就好了.
其实整个编译过程对不熟悉的人看着是非常头疼的.那些编译脚本跳来跳去 而且不像Makefile那样有 Enter ... directory ; leving xx directory 等提示.
好在错误不多 .而且每个文件夹都有个 *.mk