編譯CM14.1內存要求很高,至少8G以上,我的6G也可以搞定,交換空間分配大一點。
1、安裝平台
建議安裝Deepin 15.3桌面版系統,系統UI好看。
2、配置環境
(1)安裝編譯依賴庫
1 sudo apt-get update 2 sudo apt-get upgrade 3 sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk3.0-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev openjdk-8-jre openjdk-8-jdk pngcrush schedtool libxml2 libxml2-utils xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev gcc-multilib maven tmux screen w3m ncftp liblz4-tool
(2)建立保存repo文件的bin文件夾
1 #新建文件夾 2 mkdir ~/bin 3 #設置路徑 4 PATH=~/bin:$PATH 5 #下載repo 6 curl https://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo 7 #賦予權限 8 chmod a+x ~/bin/repo
(3)設置 github 帳號user.name和郵箱user.email
1 git config --global user.name username 2 git config --global user.email username@email.com
(4)更新/替換系統 hosts,輕松訪問國外站點
1 wget https://raw.githubusercontent.com/racaljk/hosts/master/hosts -qO /tmp/hosts 2 sudo sh -c 'cat /tmp/hosts > /etc/hosts'
如果出現 sudo: 無法解析主機:dinphy-500-310cn: 連接超時 類似的問題,請參考這里解決:http://www.cnblogs.com/dinphy/p/5660645.html
3、下載CM14.1源碼並編譯
(1)新建源碼文件夾並初始化
#新建文件夾 mkdir ~/SudaMod #進入目標文件夾 cd ~/SudaMod #初始化源碼 repo init -u git://github.com/SudaMod/android.git -b sm-3.0 #同步下載源碼 repo sync -c -f -j8 --force-sync --no-clone-bundle
如果同步AOSP源碼過程比較慢,可以更改谷歌源碼地址為國內的地址,如清華大學鏡像源的。方法是:
只需要將.repo/manifest.xml
把其中的 aosp 這個 remote 的 fetch 從 https://android.googlesource.com
改為 https://aosp.tuna.tsinghua.edu.cn/
。
1 <manifest> 2 3 <remote name="aosp" 4 - fetch="https://android.googlesource.com" 5 + fetch="https://aosp.tuna.tsinghua.edu.cn" 6 review="android-review.googlesource.com" /> 7 8 <remote name="github"
修改后,可以繼續同步 repo sync -c -f -j8 --force-sync --no-clone-bundle 。
(2)添加設備編譯三套件及依賴的文件(這一步可以忽略,也可以加入~/SudaMod/.repo/manifests/snippets/cm.xml的倒數第二行),例如我的設備:
<!-- Start Device --> <project path="device/xiaomi/ido" name="CyanogenMod/android_device_xiaomi_ido" remote="github" revision="cm-14.1" /> <project path="vendor/xiaomi/ido" name="dinphy-dev/sudamod_vendor_xiaomi_ido" remote="github" revision="sm3.0" /> <project path="kernel/xiaomi/msm8916" name="CyanogenMod/android_kernel_xiaomi_msm8916" remote="github" revision="cm-14.1" /> <project path="external/sony/boringssl-compat" name="CyanogenMod/android_external_sony_boringssl-compat" remote="github" revision="cm-14.1" groups="pdk" /> <project path="external/stlport" name="CyanogenMod/android_external_stlport" remote="github" revision="cm-14.1" groups="pdk" /> <project path="packages/resources/devicesettings" name="CyanogenMod/android_packages_resources_devicesettings" remote="github" revision="cm-14.1" groups="pdk" /> <!-- END Device -->
設備編譯三套件及依賴的文件也可以單獨 git clone ,然后放入相應的文件夾下。我的設備代號是ido,處理器是msm8916,所以放入路徑可以參考上面path中引號的部分。
(3)源碼同步完成后,開始編譯
#編譯加速設置 echo "export USE_CCACHE=1" >> ~/.bashrc #給定一個50G的空間,縮短編譯時間 ~/SudaMod/prebuilts/misc/linux-x86/ccache/ccache -M 50G #初始化編譯,注意“ . ”別忘了 . build/envsetup.sh #編譯機型brunch "device name",我的是ido brunch sm_ido-userdebug
4、我的內存為6G,編譯時提示內存空間不足的錯誤和jack錯誤,如果有出現同樣的問題,請參考:http://www.cnblogs.com/dinphy/p/6138803.html
5、編譯結束。