欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android筆記之:CM9源碼下載與編譯的應(yīng)用

 更新時(shí)間:2013年04月28日 10:48:44   作者:  
本篇文章介紹了,在Android中CM9源碼下載與編譯的應(yīng)用,需要的朋友參考下

公司最近也開始基于android4.0 ICS修改框架了,公司的手機(jī)暫時(shí)不適合拿回家測試,也沒有kernel的權(quán)限。
從個(gè)人的角度看,我手上現(xiàn)在有兩部手機(jī),一部是Htc G9 Aria,一部是Samsung I9100 Galaxys2,Cyanogenmod的開源代碼都提供了對這些手機(jī)的驅(qū)動(dòng)支持,并且能方便的編譯打包,并安裝到手機(jī)。
上一篇文章是android2.3的編譯,已經(jīng)過時(shí),而且現(xiàn)在ubuntu已經(jīng)升級到12.04,等等之類的,使我覺得非常有必要重新寫一篇新的博客來展示最新的android怎么在最新的ubuntu上編譯。
基于以上幾點(diǎn),下面我將基于galaxys2來演示如何編譯cm9的源碼并打包zip安裝到手機(jī)。

1.ubuntu12.04的選擇
我第一次用x64的系統(tǒng),發(fā)現(xiàn)配置環(huán)境的時(shí)候,會(huì)有很多種錯(cuò)誤,后來我用32位的系統(tǒng),安裝這些必備的軟件則一點(diǎn)都沒有出錯(cuò),所以在這里,如果用12.04系統(tǒng)編譯cyanogenmod ics源碼的話,我以個(gè)人經(jīng)驗(yàn)推薦使用32位系統(tǒng)。

2.內(nèi)存和cpu
因?yàn)橛行┡笥言谔摂M機(jī)上安裝ubuntu,所以內(nèi)存分配可能會(huì)容易偏小,建議盡量偏大,我1G內(nèi)存的時(shí)候,編譯中出現(xiàn)過錯(cuò)誤,重啟設(shè)置2G的內(nèi)存就沒問題。
cpu太弱的話,編譯的過程中進(jìn)程也容易被kill掉,我出現(xiàn)過一次,重啟后ok。所以cpu的水平要注意一下。

3.java的選擇
無論是android官方文檔還是上面的那篇文章,java的安裝都會(huì)找不到,他們的軟件源有問題。需要手動(dòng)安裝。
但是android ics的編譯,官方文章中指出支持openjdk-6-jdk,所以可以直接安裝openjdk6即可。
注意:這里我要說明一下,CM9的編譯腳本相對于官方源碼的編譯腳本忽略了或者說處理了一些可能出現(xiàn)的錯(cuò)誤的地方,比如說這里java版本的檢測,如果是open jdk的話,官方就編譯不過,其實(shí)是一樣的,只需要修改一下腳本(build/core/main.mk),找到檢測java版本的地方:

復(fù)制代碼 代碼如下:

# Check for the correct version of java
java_version := $(shell java -version 2>&1 | head -n 1 | grep '^java .*[ "]1\.6[\. "$$]')
ifneq ($(shell java -version 2>&1 | grep -i openjdk),)
java_version :=
endif
ifeq ($(strip $(java_version)),)
$(info ************************************************************)
$(info You are attempting to build with the incorrect version)
$(info of java.)
$(info $(space))
$(info Your version is: $(shell java -version 2>&1 | head -n 1).)
$(info The correct version is: Java SE 1.6.)
$(info $(space))
$(info Please follow the machine setup instructions at)
$(info $(space)$(space)$(space)$(space)http://source.android.com/source/download.html)
$(info ************************************************************)
#$(error stop) //如果確定已經(jīng)安裝正確的jdk的話,這句去掉,讓編譯繼續(xù)
endif

CM9的編譯腳本直接就去掉了這句話,但是還是要注意一下安裝正確的jdk版本。

4.解決下載過程中g(shù)ooglesource訪問不了的問題
你需要一個(gè)vpn帳號來翻墻。
這個(gè)我使用我之前購買的一個(gè)VPN,也有免費(fèi)的VPN,具體的免費(fèi)VPN 和VPN的配置,大家參考下面兩個(gè)鏈接:
http://173.252.215.172/server/query
http://173.252.215.172/setting/ubuntu.shtml
配置好了VPN,我們的Ubuntu就可以順利的下載所有的CM9源碼。

5.環(huán)境配置
參考官方的Ubuntu 12.04(請注意官方文檔,區(qū)分Ubutu11.10 x6和之前的系統(tǒng))的要求,我們需要配置好如下環(huán)境:

復(fù)制代碼 代碼如下:

sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev:i386
sudo apt-get install g++-multilib mingw32 openjdk-6-jdk tofrodos python-markdown
sudo apt-get install libxml2-utils xsltproc zlib1g-dev:i386

應(yīng)該不會(huì)出什么問題。

6.安裝repo

復(fù)制代碼 代碼如下:

cd
mkdir bin
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
alias repo="~/bin/repo"

本來如此即可,但是我們需要隨時(shí)都能運(yùn)行repo的話,最好把repo配置到環(huán)境中去:
復(fù)制代碼 代碼如下:

vim ~/.bashrc
#打開后,在文件最后面加上alias repo="~/bin/repo",然后保存退出
source ~/.bashrc

下次該用戶環(huán)境下無論什么時(shí)候什么地方都可以repo了。

7.下載CM9源碼
列表文件是托管在Github上的:https://github.com/CyanogenMod/android

復(fù)制代碼 代碼如下:

mkdir cm9
cd cm9
repo init -u git://github.com/CyanogenMod/android.git -b ics
repo sync

ics分支就是CM9 ICS的分支了。
慢慢的等待吧(如果下載過程中,不停的提示打不開googlesource的話,記得參考前面配置vpn翻墻,本人改host無效)。

8.配置USB
這一步是為了后面要從你的手機(jī)拷貝系統(tǒng)屬性文件,用戶編譯源碼的。
ubuntu下不需要裝驅(qū)動(dòng)才能連接的上你的手機(jī),但是需要配置,可參考官方:http://source.android.com/source/initializing.html
我這里也簡單的寫下:

復(fù)制代碼 代碼如下:

sudo vim /etc/udev/rules.d/51-android.rules

然后,添加如下內(nèi)容:
復(fù)制代碼 代碼如下:

#Samsung
SUBSYSTEM=="usb", SYSFS{idVendor}==04e8, MODE=0666

這是三星手機(jī)的配置,其他手機(jī)通過lsusb命令查看相應(yīng)的id,以上述格式添加到/etc/udev/rules.d/51-android.rules文件里即可。
配置好了后,拔掉手機(jī)再插上,基本上就可以了。如果還不可以,先kill-server,再用root用戶連接。如果還不行,進(jìn)入android-sdk/tools/,給你的adb這個(gè)命令文件"chmod +s adb",kill-server,再adb,多試幾次。

9.下載設(shè)備專用工程
CM9現(xiàn)在和CM7在下載設(shè)備工程不一樣,CM7是下載源碼的時(shí)候就自動(dòng)下載好了,CM9則沒有,但是可以手動(dòng)智能識別下載。
比如我的手機(jī)是galaxys2,則使用如下命令:

復(fù)制代碼 代碼如下:

brunch galaxys2

如果拼寫正確的話,它會(huì)自動(dòng)下載galaxys2的相關(guān)工程(在目錄~/cm9/device/下多了以下目錄samsung/galaxys2)。

如果下載完成,進(jìn)入編譯的話,請停止編譯,我們還需要進(jìn)行下一步。

10.獲取手機(jī)系統(tǒng)屬性文件

復(fù)制代碼 代碼如下:

cd ~/cm9/device/samsung/galaxys2
./extract-files.sh
cd ~/cm9
vendor/cm/get-prebuilts

這一步只需要執(zhí)行一次就可以了。

11.編譯CM9源碼
CM9的源碼比編譯Android官方源碼相對出錯(cuò)情況會(huì)少很多。
首先,初始化變量:

復(fù)制代碼 代碼如下:

cd cm9
source build/envsetup.sh

直接使用命令:
復(fù)制代碼 代碼如下:

brunch galaxys2

然后慢慢的等待吧!
如果是虛擬機(jī)的話,內(nèi)存吃緊和cpu不足的話,隨時(shí)都可能出錯(cuò)。
如果出現(xiàn)錯(cuò)誤的,注意分析一下錯(cuò)誤的原因,我這里還比較順利,中斷了一次,重新編譯一下又可以了。
ps:如果是官方源碼編譯的話,我相信總有那么幾個(gè)錯(cuò)誤,CM9要好很多。
編譯完成后,會(huì)生成一個(gè)zip文件,放到手機(jī)里就可以刷機(jī)了。

12.編譯工程
到上面為止,我們已經(jīng)搭建了一個(gè)健康的CM9的環(huán)境,但是我們的目地不是編譯CM9 ROM,這個(gè)CM每天會(huì)出nightly版本,所以我們主要是使用這個(gè)CM9環(huán)境來編譯framework,app等工程。
比如第二天我們重新啟動(dòng),如何編譯framework-res.apk,framework.jar,Music.apk?我們需要用到這個(gè)環(huán)境:

復(fù)制代碼 代碼如下:

cd cm9
source build/envsetup.sh
//注意product名稱,chooseproduct的時(shí)候,在之前galaxys2要加上cm_,不然找不到產(chǎn)品
chooseproduct cm_galaxys2
//下面進(jìn)入到framework/base/core/res.編譯framework-res.apk
cd framework/base/core/res
mm
//也可以編譯framework.jar
cd ~/cm9/framework/base/core/java
mm
//還可以編譯Music.apk
cd ~/cm9/packages/apps/Music
mm

如此就可以修改系統(tǒng)ROM,修改系統(tǒng)APP了。

13.小結(jié)
搭建Android環(huán)境和編譯Android源碼是一個(gè)復(fù)雜,耗時(shí),熬夜的過程,十分不容易。
但是,釋然回首,其實(shí)也很簡單。

相關(guān)文章

最新評論