如何建立CM11开发编译环境

转自: http://apk.tw/thread-460766-1-1.html

             http://apk.tw/thread-466419-1-1.html


個人因為一些工作和家庭的因素離開一陣子
現在比較有空開始發一些之前就想PO的一些如何從原碼編譯的文章
如果文章內容有不足的地方還請各方高手不吝指教

編譯cm11最好在Linux作業系統上編譯
至於windows或是mac要如何編譯要牽扯到的設定非常複雜在這邊就不討論
個人推荐用Ubuntu 13.10或Linux Mint 16作業系統編譯
請自行上網google相關文章要如何安裝Linux作業系統

注意電腦使用的Linux作業系統版本最好是64-bit的
並且至少有4G的記憶體,原碼會佔用約20G的硬碟空間
請確保家目錄同步完原碼後至少還有20G的空間可用
否則編譯的過程會有問題無法順利編譯



教學開始
1.在終端機(terminal)下輸入下列指令,移除OpenJDK

  1. sudo apt-get purge openjdk-* icedtea-* icedtea6-*
複製代碼
2.現在安裝Oracle Java 6 jdk可以用ppa的方式安裝,免除一堆複雜的環境變數等設定
  1. sudo add-apt-repository ppa:webupd8team/java
  2. sudo apt-get update && sudo apt-get install oracle-java6-installer
複製代碼
開始下載Oracle Java 6 jdk,並出現安裝的視窗選擇接受即可

3.安裝編譯cm11的所需要的套件
  1. sudo apt-get install bison build-essential curl flex g++-multilib gcc-multilib git-core gnupg gperf lib32ncurses5-dev lib32readLine-gplv2-dev lib32z1-dev libesd0-dev libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop squashfs-tools xsltproc pngcrush schedtool zip zlib1g-dev
複製代碼

4.安裝設定repo,這個是google發展出來的Android原碼版本控制工具
  1. mkdir ~/bin
  2. PATH=~/bin:$PATH
  3. cd ~/bin
  4. curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
  5. chmod a+x ~/bin/repo
  6. cd

複製代碼

5.建立cm11工作目錄
  1. mkdir cm-11
  2. cd cm-11
複製代碼

6.初始化repo,cm11原碼
  1. repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
複製代碼

7.
同步cm11原碼,此步驟約須下載約10G的原碼資料,並佔用約20G的硬碟空間,請耐心等待
  1. repo sync
複製代碼


備註:
repo可斷點續傳,如果同步的過程太花時間可同時按下ctrl+z結束原碼同步的動作
下次再執行下列指令重新同步上次斷掉的地方繼續同步原碼
  1. repo sync
複製代碼

今天的教學到此為止
下回繼續繼續介紹如何編譯cm11


延續上一篇同步完原碼後
接下來的工作就是開始編譯新的cm11
後續的動作會因為不同的機型
步驟方式會有所不同
今天介紹的是比較簡單的方式
直接用高手已經整理過的原碼(請自行上網蒐集你的機型其他高手寫好的原碼)
例如你手機的Device tree,vendor tree,hardware tree,內核(kernel)內核架構等
如果你的手機cm11官方有資源可以嘗試直接從步驟4開始


教學開始
步驟1:
建立自己手機的Device tree

  1. cd device
  2. mkdir sony
  3. cd sony
  4. git clone [url=http://012.tw/cxEFOW7]https://github.com/Andrewas/Android_device_sony_kumquat.git[/url] -b cm-11.0 kumquat
  5. cd ../..
複製代碼
步驟2:
建立自己手機的vendor tree,hardware tree,內核(kernel)架構
  1. cd vendor
  2. mkdir sony
  3. cd sony
  4. git clone [url=http://012.tw/lnrvKM4]https://github.com/XperiaNovathor/proprietary_vendor_sony.git[/url] -b master kumquat
  5. cd ../..
  6. cd hardware
  7. git clone [url=http://012.tw/iqstSV2]https://github.com/XperiaNovathor/android_hardware_semc.git[/url] -b master semc
  8. cd ..
  9. mkdir -p kernel/sony
  10. cd kernel/sony
  11. git clone [url=http://012.tw/anvJR89]https://github.com/XperiaNovathor/android_kernel_xperiago.git[/url] -b cm-11 u8500
  12. cd ../..
複製代碼
步驟3:
接下來定義編譯時所調用的檔案路徑為自己手機的架構,而非cm11預設的
  1. patch -p1 < hardware/semc/patches/framework_av.patch
  2. patch -p1 < hardware/semc/patches/framework_native.patch
  3. patch -p1 < hardware/semc/patches/framework_base.patch
  4. patch -p1 < hardware/semc/patches/hardware_libhardware.patch
  5. patch -p1 < hardware/semc/patches/hardware_libhardware_legacy.patch
  6. patch -p1 < hardware/semc/patches/system_core.patch
  7. patch -p1 < hardware/semc/patches/bionic.patch
  8. patch -p1 < hardware/semc/patches/bootable_recovery.patch
  9. patch -p1 < hardware/semc/patches/external_bluetooth_bluedroid.patch
  10. patch -p1 < hardware/semc/patches/packages_apps_Bluetooth.patch
複製代碼
步驟4:
下載初始化編譯cm11所需的檔案架構設定
  1. cd vendor/cm
  2. ./get-prebuilts
  3. cd ../..
複製代碼
步驟5:
開始編譯
  1. . build/envsetup.sh
  2. lunch cm_kumquat-userdebug
  3. make -j4 otapackage
複製代碼
其中kumquat是我的手機xperia u在cm的代號
cpu規格比較好超過4核心的
可考慮將-j4改為-j8
利用更多執行緒去編譯可縮短編譯的時間
我的筆電規格為Intel Core i5-3230M
8G DDR3
總共編譯的時間約為2個半小時

下面的指令為你編譯新的cm11時需要執行的指令(例如同步最新的cm11原碼)
步驟1:
首先清除之前編譯時所產生的所有檔案
  1. cd cm-11
  2. make clean
複製代碼
步驟2:
然後重新定義路徑和同步最新的原碼
  1. patch -p1 -R < hardware/semc/patches/framework_av.patch
  2. patch -p1 -R < hardware/semc/patches/framework_native.patch
  3. patch -p1 -R < hardware/semc/patches/framework_base.patch
  4. patch -p1 -R < hardware/semc/patches/hardware_libhardware.patch
  5. patch -p1 -R < hardware/semc/patches/hardware_libhardware_legacy.patch
  6. patch -p1 -R < hardware/semc/patches/system_core.patch
  7. patch -p1 -R < hardware/semc/patches/bionic.patch
  8. patch -p1 -R < hardware/semc/patches/bootable_recovery.patch
  9. patch -p1 -R < hardware/semc/patches/external_bluetooth_bluedroid.patch
  10. patch -p1 -R < hardware/semc/patches/packages_apps_Bluetooth.patch
  11. repo forall -p -c "git checkout -f"
  12. repo sync
  13. patch -p1 < hardware/semc/patches/framework_av.patch
  14. patch -p1 < hardware/semc/patches/framework_native.patch
  15. patch -p1 < hardware/semc/patches/framework_base.patch
  16. patch -p1 < hardware/semc/patches/hardware_libhardware.patch
  17. patch -p1 < hardware/semc/patches/hardware_libhardware_legacy.patch
  18. patch -p1 < hardware/semc/patches/system_core.patch
  19. patch -p1 < hardware/semc/patches/bionic.patch
  20. patch -p1 < hardware/semc/patches/bootable_recovery.patch
  21. patch -p1 < hardware/semc/patches/external_bluetooth_bluedroid.patch
  22. patch -p1 < hardware/semc/patches/packages_apps_Bluetooth.patch
複製代碼
步驟3:
開始編譯新的cm11
  1. . build/envsetup.sh
  2. lunch cm_kumquat-userdebug
  3. make -j4 otapackage
複製代碼

教學結束
之後會陸續介紹如何移植修改recovery,內核等
以及詳細的原碼架構等
如果我有解釋不清楚或錯誤的地方
還請各位高手不令指教


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值