編譯CM14.1(sudmod71.1)過程記錄


編譯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、編譯結束。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM