安卓AndroidROM定制移植教程_第1頁(yè)
安卓AndroidROM定制移植教程_第2頁(yè)
安卓AndroidROM定制移植教程_第3頁(yè)
安卓AndroidROM定制移植教程_第4頁(yè)
安卓AndroidROM定制移植教程_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、CyanogenMOD 移植教程轉(zhuǎn)白秋葉隨風(fēng)Ivan ;樂(lè)蛙論壇等。第一章:環(huán)境的搭建一.系統(tǒng)選擇和安裝建議使用 ubuntu LTS 10.04X64新手朋友推薦Deepin Linux 基于ubuntu定制的,適合新手使用系統(tǒng)安裝教程,以下方法通用于 UBUNTU官方版本U 盤(pán)安裝:光盤(pán)安裝:搭建android編譯環(huán)境:英文好的請(qǐng)猛擊這里: WIKI : fromsource1. 安裝JDK因?yàn)锳NDROID大部分東西是java寫(xiě)的,所以首先我們需要安裝JDK 打開(kāi)終端按照如下命令輸入或者直接復(fù)制粘貼:編譯android 2.3或者更新的版本請(qǐng)使用jdk 6$ sudo add-apt-r

2、epository "deb lucid partner"$ sudo apt-get update$ sudo apt-get install sun-java6-jdk 如果你需要編譯的是 2.2 以下 的版本請(qǐng)使用JDK 5,因?yàn)楝F(xiàn)在大家都是使用Gingerbread 以上的系統(tǒng),這里就不介紹jdk5如何安裝的了,如果有需要請(qǐng)度娘或者google2. 安裝各種依賴包64位環(huán)境:依然是終端中輸入$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-de

3、v libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgll-mesa-dev g+-multilib mingw32 tofrodospython-markdown libxml2-utils xsltproc如果這些依賴包依然不能解決你的問(wèn)題,請(qǐng)參考如下: Hero(CDMA):_Com pile_CyanogenMod_(Linux)3. 下載代碼打開(kāi)終端:在個(gè)人目錄下面使用的是 android 代替我的工程,用cm7代替CM7的源碼用CM

4、9代替CM9的源碼如果要更新下載CM7的源碼請(qǐng)輸入:mkdir -p /binmkdir -p /android/cm7個(gè)人目錄下的 bin目錄是為了保存repo等更新腳本的依然再終端輸入:curlhttps:/dl->/bin/repochmod a+x /bin/repo可以把/bin/repo 加入到環(huán)境變量里面終端輸入 sudo gedit /etc/environment在 PATH= 加入 PATH="/home/ivanhuang/bin:"ivanhuang為個(gè)人目錄的名稱,也就是計(jì)算機(jī)登錄名更改結(jié)束之后終端輸入source /etc/environm

5、ent就能直接在終端中使用repo命令了。然后下一步開(kāi)始同步代碼:依然是打開(kāi)終端輸入cd android/cm7repo init -u git:/-bgingerbreadrepo sync -j16這個(gè)是更新CM7的源碼 Gingerbread分支的如果要更新CM9的源碼請(qǐng)輸入mkdir -p android/cm9repo init -u git:/-b icsrepo sync -j16Ubuntu 中安裝配置JDK首先從SUN網(wǎng)站下載JDK然后在shell中執(zhí)行:代碼:sudo chmod +x jdk-6u17-linux-i586.bin修改bin文件權(quán)限,使其可執(zhí)行。然后執(zhí)行代

6、碼:jdk-6u17-linux-i586.bin將會(huì)出現(xiàn)字幕,持續(xù)按回車鍵,直到屏幕出現(xiàn)需要輸入yes/no,此時(shí)輸入yes/y回車,將會(huì)把JDK解壓到文件夾,得到j(luò)dk1.6.0_17.此 時(shí)JDK安裝完畢。下面進(jìn)行配置。執(zhí)行代碼:sudo gedit /etc/environment在environment 中修改如下信息:PATH=":/home/cy/jdk1.6.0_17/bin"CLASSPATH=".:/home/cy/jdk1.6.0_17/lib"JAVA_HOME="/home/cy/jdk1.6.0_17”由于ubunt

7、u中有默認(rèn)jdk還需要執(zhí)行如下工作執(zhí)行代碼:sudo update-alternatives -install /usr/bin/java java/home/cy/jdk1.6.0_17/bin/java 300sudo update-alternatives -install /usr/bin/javac javac/home/cy/jdk1.6.0_17/bin/javac 300通過(guò)這一步將,安裝的 JDK加入java選單然后執(zhí)行。代碼:sudo update-alternatives -config java通過(guò)這一步設(shè)置系統(tǒng)默認(rèn)的JDK然后在shell中執(zhí)行代碼:java -ver

8、sion此時(shí)顯示的系統(tǒng)中的java就是剛剛安裝的java第二章:android源碼總體結(jié)構(gòu)-Makefile (全局的 Makefile 文件)-bionic (Bionic 含義為仿生,這里面是一些基礎(chǔ)的C庫(kù)源代碼)-bootloader (引導(dǎo)加載器)build目錄中的內(nèi)容不是目標(biāo)所用的代碼,而是編譯和配置所需要的腳本和工具)-build (build 目錄中的內(nèi)容不是目標(biāo)所用的代碼,而是編譯和配置所需要的腳本和工具)-cts (Android 兼容性測(cè)試套件標(biāo)準(zhǔn))-libcore (核心庫(kù)相關(guān))Dalvik虛擬機(jī)針對(duì)嵌入式設(shè)備優(yōu)化的JavaJava虛擬機(jī))-dalvik ( Dalvik

9、 虛擬機(jī),針對(duì)嵌入式設(shè)備優(yōu)化的Java虛擬機(jī))-development (創(chuàng)建應(yīng)用程序所需要的模板和工具) qcom,-device (與具體設(shè)備相關(guān)的一些編譯腳本和庫(kù),如htc,qcom,samsung等)-external (Android使用的一些外部的開(kāi)源框架和庫(kù))(應(yīng)用程序的框架層,SDKSDK的接口基本都是在這里實(shí)現(xiàn)的)-frameworks(應(yīng)用程序的框架層,SDK的接口基本都是在這里實(shí)現(xiàn)的)-hardware (與硬件相關(guān)的庫(kù))Linux2.6-kernel (Linux2.6的內(nèi)核源代碼)-ndk (本地開(kāi)發(fā)套件-C語(yǔ)言開(kāi)發(fā)套件)-CAndroid 的各種應(yīng)用程序)-pack

10、ages (Android的各種應(yīng)用程序)-prebuilt (Android在各種平臺(tái)下編譯的預(yù)置腳本)-sdk (SDK及模擬器)Android 的底層的一些庫(kù))-system (Android的底層的一些庫(kù))' -vendor (廠商私有的代碼)packages/|- apps (各種應(yīng)用程序,如聯(lián)系人、瀏覽器等)| - experimental ( 一些實(shí)驗(yàn)性的項(xiàng)目,如錯(cuò)誤報(bào)告)| - inputmethods (輸入法相關(guān))| - providers (各種數(shù)據(jù)源實(shí)現(xiàn),如聯(lián)系人數(shù)據(jù)、媒體庫(kù)等信息)| -wallpapers (各種壁紙程序)Android Framework功

11、能介紹android.app :提供高層的程序模型和基本的運(yùn)行環(huán)境。android.content :包含對(duì)各種設(shè)備上的數(shù)據(jù)進(jìn)行訪問(wèn)和發(fā)布。android.database :通過(guò)內(nèi)容提供者瀏覽和操作數(shù)據(jù)庫(kù)。android.graphics :底層圖形庫(kù),包含畫(huà)布、點(diǎn)、矩形等,可以將其直接 繪制到屏幕上。android.location :定位和相關(guān)服務(wù)的類。android.media :提供一些類管理多種音頻、視頻的媒體接口。 :提供幫助網(wǎng)絡(luò)訪問(wèn)的類,超過(guò)通常的.*接口。android.os :提供了系統(tǒng)服務(wù)、消息傳輸和IPC機(jī)制。android.opengl :提供 OpenGL 的工具。

12、vider :提供訪問(wèn) Android 內(nèi)容提供者的類。android.telephony :提供與撥打電話相關(guān)的 API交互。android.view :提供基礎(chǔ)的用戶界面接口框架。android.util :涉及工具性的方法,例如時(shí)間日期的操作。android.webkit :默認(rèn)瀏覽器操作接口。android.widget :包含各種UI元素(大部分是可見(jiàn)的)在應(yīng)用程序的布局中使用build/| -buildspec.mk.default| -cleanspec.mk| -core (各種以mk為結(jié)尾的文件,它門(mén)是編譯所需要的Makefile)| -envsetup

13、.sh| - libs| -target (包含board和product兩個(gè)目錄,為目標(biāo)所需要文件)| -tools (編譯過(guò)程中主機(jī)所需要的工具,一些需要經(jīng)過(guò)編譯生成)其中,core中的 Makefile 是整個(gè) Android 編譯所需要的真正的Makefile,它被頂層目錄的Makefile弓I用第三章:如何編譯一個(gè)支持你設(shè)備的recovery前面已經(jīng)介紹過(guò)CyanogenMod 是什么東西,以及環(huán)境搭建, android源碼的大概框架。地址: .en/u/1697247850 ,所以這里就不再介紹。首先要確定你的設(shè)備,是否支持刷第三方recovery ,或者是否支持fastboot模

14、式,或者是否解鎖bootloader ,如果你的設(shè)備上述 都不支持,那么你的機(jī)器可能就不能移植第三方系統(tǒng)。如果這樣請(qǐng)?zhí)?過(guò)本文。當(dāng)你確定你的設(shè)備有支持上述所講的,那么恭喜你,你的設(shè) 備可以移植第三方系統(tǒng)。接下來(lái)開(kāi)始干活了,工欲善其事,必先利其器。制作支持你 手持設(shè)備的recovery。這里以中興n760為例子介紹如何編譯 支持 中興 n760 的 recovery.如果你已經(jīng)下載了 cm源碼,請(qǐng)往下看,如果你沒(méi)有下載源碼, 請(qǐng)按照前面發(fā)的教程下載源碼.首先在device目錄下面建立一個(gè)zte 目錄,這個(gè)目錄是廠商的名字,例如中興就是zte 我就建立zte,華為 的話 我就建立huawei,然后

15、在zte目錄下面 建立一個(gè)目錄為 roamer這個(gè)名字如何得到呢,在手機(jī)rom里面system/p 目 錄下面 搜索 duct.device你會(huì)發(fā)現(xiàn)duct.device = roamer所以我把設(shè)備名稱定為 roamer 目錄都新建好了之后,我們來(lái)看一下目錄樹(shù)system|device|zte|roamer這個(gè)就是目錄結(jié)構(gòu),我們?cè)趓oamer目錄下面,新建recovery_ui.c這個(gè)文件里面是 手機(jī) 各按鍵對(duì)應(yīng)的按鍵值,這樣寫(xiě)入之后才能正確選擇按鍵AndroidBoard.mk連接地址到 kernelAndroidProducts.mk讓編譯工具連

16、接至V device_roamer.mkBoardConfig.mk手持設(shè)備 機(jī)器CPU GPU型號(hào)參數(shù)配置device_roamer .mk p 信息添加,私有庫(kù) xml 文件 init文件拷貝 按機(jī)器設(shè)備device來(lái)寫(xiě)roamer是N760的設(shè)備型號(hào)kernel官方提取,boot.img提取 提取可以使用國(guó)外高手制作的廚 房軟件recovery.fstab手機(jī)分區(qū)表p 可有可無(wú)從官方rom 提取,比如n760 boot.img里面提取的init.roamer.rc 文件 這個(gè)也是需要這些文件的.首先我們寫(xiě)AndroidBoard.mk 文件#這一句的

17、意思的 根目錄就是roamer目錄AndroidProducts.mk看文件名PRODUCT_MAKEFILES := $(LOCAL_DIR)/device_roamer.mkBoardConfig.mk設(shè)備的配置文件USE_CAMERA_STUB := true# inherit from the proprietary version-include vendor/zte/roamer/BoardConfigVendor.mkTARGET_NO_BOOTLOADER := trueTARGET_BOARD_PLATFORM := unknownTARGET_CPU_ABI := arme

18、abiTARGET_BOOTLOADER_BOARD_NAME := roamer / 此處一版 為 device#此處為打包boot.img 的信息,可以通過(guò)廚房 查看到,我模糊 的記得用廚房解壓boot.img的時(shí)候的選項(xiàng)應(yīng)該是 打開(kāi)廚房,選擇0高級(jí),然后選擇20,再選擇 S就能看到下面這三個(gè)信息了# dev:size erasesize name # mtd0: 00600000 00020000 "recovery"# mtdl: 00400000 00020000 "boot# mtd2: 00180000 00020000 "splash&q

19、uot;# mtd3: 00080000 00020000 "misc"# mtd4: 03980000 00020000 "cache"# mtd5: 0dc00000 00020000 "system"# mtd6: 0a280000 00020000 "userdata"# mtd7: 00100000 00020000 "oem"# mtd8: 00180000 00020000 "persist"BOARD_BOOTIMAGE_PARTITION_SIZE:= 0x

20、00500000BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x00600000BOARD_SYSTEMIMAGE_PARTITION_SIZE:= 0x0dc00000BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x0a280000BOARD_FLASH_BLOCK_SIZE := 131072#內(nèi)核路徑TARGET_PREBUILT_KERNEL := device/zte/roamer/kernel# 一般情況下,手機(jī)沒(méi)有實(shí)體返回鍵,建議選擇這一項(xiàng),有的手機(jī)觸 摸返回鍵在recovery下面不能使用的,比如小米手機(jī)。BOAR

21、D_HAS_NO_SELECT_BUTTON := true# 編譯 recovery 指 定keymap文件,看參數(shù)名稱就知道了,不懂的可以google翻譯device_roamer.mk這個(gè)是編譯recovery的時(shí)候我寫(xiě)的,有些東西可以 不要,以后編譯rom的時(shí)候需要?jiǎng)h除重寫(xiě)的#語(yǔ)言配置文件$(callinherit-product,$(SRC_TARGET_DIR)/product/languages_full.mk)# The gps config appropriate for this device gps 配置文件$(call inherit-product, device/common/gps/gps_as_supl.mk)# vendor私有庫(kù)配置文件$(call inherit-product-if-exists, vendor/zte/roamer/roamer-vendor.mk)#有些你需要對(duì)應(yīng)用或者fra

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論