主機: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