Android ROM開發–ubuntu下載、編譯CyanogenMod7

來源:互聯網
上載者:User
文章目錄
  • 8、刷機
  • 9、編譯期間遇到的問題

    CyanogenMod是一個開源的基於Android作業系統,也就是大家經常刷機用的CM,至於如何刷機以及如何編譯google原生的Android。

可以參考我的iteye部落格:http://hualang.iteye.com/admin/categories/166795

在此,有意個建議。如果是做Android開發的最好還是用google親生的手機作為測試機(nexus one、nexus s、nexus prime),因為這些機型不僅效能強大,支援原生作業系統,還支援很多其他機型目前還沒有的功能(比如我的HTC desire z不支援NFC),另外如果想刷機也可以找到n個版本。而其他機型總是存在這樣那樣的問題,做開發遇到基於其他機型的問題時也難以找到合適的答案,閑話不說了。

我博文是關於如何下載、編譯CyanogenMod,以及如何自訂自己的ROM系列,比如我們比較熟悉的小米手機的MIUI就是基於CyanogenMod。但是因為自己換了不同手機,所以以前基於Nexus S的一些操作不適合於現在的機型了,但是大概流程是一樣的。在這裡最最麻煩的不是下載源碼,而是--編譯CyanogenMod。各種各樣的問題,每一次編譯都要至少1、2個小時,我話費了5天來編譯源碼,期間遇到各種各樣的問題,隨著一點一點的查詢也逐個的解決了,今天終於編譯成功、刷機成功了。

 

機型:HTC desire z(HTC vision)

Android源碼:CyanogenMod 7(下載的最新的CM源碼2.3.7編譯還有問題,所以用的是稍微老一點2.3.4的)

電腦:Thinkpad 32位

系統:Ubuntu 10.10

問題解決:如果你的機型不是這個,編譯的源碼版本也不是這個,遇到問題最好還是去外面查查(程式員必備技術,你們懂得),下面是一些對你有協助的網站

 1、CyanogenMod Wiki。可以根據上面的教程來下載並編譯適合你機型的CM

http://wiki.cyanogenmod.com/wiki/Main_Page

2、XDA Developer。遇到技術問題多上上面問,大牛很多

http://forum.xda-developers.com/index.php

3、github:如果你編譯時間缺少某些包,可以到上面找找看

https://github.com/koush

4、CyanogenMod官網,用於下載ROM

http://www.cyanogenmod.com(被牆了,so...)

 

在開始之前你需要root你的手機,在www.cyanogenmod.com裡找到針對你的機型的ROM下載並刷機。(國內這段時間牆了,so...)

有關刷機、root等可以到我的iteye部落格中找到,也可以到MIUI官網找一些關於刷機的教程

http://hualang.iteye.com/admin/categories/166795

下面開始具體的步驟

1、安裝軟體

首先需要你安裝並配置好Android環境,這個不解釋

For 32-bit & 64-bit systems:

sudo apt-get install 下面軟體列表(如果某些安裝有問題,最好一個一個的下載安裝)

git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk pngcrush schedtool

For 64-bit only systems:

g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline5-dev gcc-4.3-multilib g++-4.3-multilib
NOTE: gcc-4.3-multilib g++-4.3-multilib is no longer available for Ubuntu 11.04 64-bit, but should still build without issue.
NOTE:On Ubuntu 10.10, and variants, you need to enable the parter repository to install sun-java6-jdk:
add-apt-repository "deb http://archive.canonical.com/ maverick partner"

Download RomManager

2、建立目錄


在終端中輸入下列命令下載並執行repo

建立一個目錄,用於存放原始碼

          $mkdir -p cyanogenmod

          $mkdir -p bin

3、初始化下載庫

在終端中輸入下列命令下載並執行repo:

$curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$chmod a+x ~/bin/repo
注意:你需要重啟電腦來使其生效

$chmod a+x ~/bin/repo

4、下載CyanogenMod源碼

在終端中輸入下列命令下載並執行repo:

現在輸入下列命令來初始化版本庫:

$cd ~/cyanogenmod
$repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
$repo sync
或者repo sync -j16(-jn中的n表示開啟的網路連接數,開啟多個網路連接可以加速下載速度)
出現如下的狀態就表示下載完成了(耗時教長,我用的是4M頻寬下了3個小時,大小4G多)

5、擷取屬性檔案

此時需要將手機通過USB串連到Ubuntu上。如果一開始不知別手機裝置的話,可以參考http://www.cnblogs.com/loulijun/archive/2012/01/10/2318316.html來解決

然後在終端中輸入

          $adb devices

如果顯示如下錯誤的話,可以通過如下命令來解決(以後再遇到就用這種方式解決就是了)

         $sudo adb kill-server

         $sudo adb devices

$cd ~/cyanogenmod/device/htc/vision/
$./extract-files.sh
NOTE: 注意,如果你擷取檔案的時候缺少某些如照相機或radio等檔案時,你可以到上面的網站找找是否你需要的檔案
6、下載 RomManager
$cd ~/android/system/vendor/cyanogen/
$./get-rommanager
7、編譯CyanogenMod

編譯源碼

編譯源碼之前,因為源碼預設設定是在64位機編譯的,所以你需要修改其為32位即可

------------------------------64位改為32位方法-----------------------------------------------------

build/core/main.mk:73: You are attempting to build on a 32-bit system.
build/core/main.mk:74: Only 64-bit build environments are supported beyond froyo/2.2.
是因為cm預設只支援64-bit,而我的電腦是32位的,所以需要修改一些檔案即可

./external/clearsilver/cgi/Android.mk 
./external/clearsilver/java-jni/Android.mk 
./external/clearsilver/util/Android.mk 
./external/clearsilver/cs/Android.mk
4個檔案中的

LOCAL_CFLAGS += -m64LOCAL_LDFLAGS += -m64 

注釋掉,或者將“64”換成“32”

LOCAL_CFLAGS += -m32LOCAL_LDFLAGS += -m32 

然後,將./build/core/main.mk 中的
ifneq (64,$(findstring 64,$(build_arch))) 
改為:
ifneq (i686,$(findstring i686,$(build_arch)))

這樣,32位的電腦也可以正常編譯了

NOTE:最新版本的CM源碼沒有ifneq(64...)這部分,所以就不許要改了

-----------------------------------------------------------------------------------------------------------

$. build/envsetup.sh && brunch vision
編譯成功後

8、刷機

正常情況下可以刷成功,刷機教程看上面

9、編譯期間遇到的問題

(1)執行.extract-files.sh如果擷取手機的屬性檔案缺少的話,如。可以到

https://github.com/koush/proprietary_vendor_htc/tree/gingerbread/vision/proprietary

上尋找你缺少的檔案,下載後放到

/home/loulijun/cyanogenmod/vendor/htc/vision/proprietary下即可

(2)undefined reference to 'msm_device_mute'、libaudio.so錯誤

這種錯誤網上的有些方法依然不能解決,我是換了從cm2.3.7最新的源碼為cm2.3.4的。或者關閉audio的編譯選項,可以到vendor和device下找到相應的mk檔案將設定audio的true設定為false

(3)undefined reference to 'HAL_getCameraInfo'、libcameraservice錯誤

解決辦法:

$cd /cyanogenmod/device/htc/vision

$vim BoardConfig.mk

將BOARD_USE_FROYO_LIBCAMERA := false(設定為false)

$cd /cyanogenmod/vendor/htc/vision/

$vim BoardConfigVendor.mk

將USE_CAMERA_STUB設定為false(這樣編譯就好了)

 

另外還可以參考

http://forum.xda-developers.com/showthread.php?t=899674

裡面有解決camera問題的方法(如果上述不奏效的話),不過上面是基於nexus one的,原理一樣

 

 

 

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.