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

下載本文檔

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

文檔簡介

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

2、epository "deb lucid partner"$ sudo apt-get update$ sudo apt-get install sun-java6-jdk 如果你需要編譯的是 2.2 以下 的版本請使用JDK 5,因為現(xiàn)在大家都是使用Gingerbread 以上的系統(tǒng),這里就不介紹jdk5如何安裝的了,如果有需要請度娘或者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如果這些依賴包依然不能解決你的問題,請參考如下: Hero(CDMA):_Com pile_CyanogenMod_(Linux)3. 下載代碼打開終端:在個人目錄下面使用的是 android 代替我的工程,用cm7代替CM7的源碼用CM

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

5、ent就能直接在終端中使用repo命令了。然后下一步開始同步代碼:依然是打開終端輸入cd android/cm7repo init -u git:/-bgingerbreadrepo sync -j16這個是更新CM7的源碼 Gingerbread分支的如果要更新CM9的源碼請輸入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將會出現(xiàn)字幕,持續(xù)按回車鍵,直到屏幕出現(xiàn)需要輸入yes/no,此時輸入yes/y回車,將會把JDK解壓到文件夾,得到j(luò)dk1.6.0_17.此 時JDK安裝完畢。下面進行配置。執(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中有默認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通過這一步將,安裝的 JDK加入java選單然后執(zhí)行。代碼:sudo update-alternatives -config java通過這一步設(shè)置系統(tǒng)默認的JDK然后在shell中執(zhí)行代碼:java -ver

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

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

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

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

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

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

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

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

16、接至V device_roamer.mkBoardConfig.mk手持設(shè)備 機器CPU GPU型號參數(shù)配置device_roamer .mk p 信息添加,私有庫 xml 文件 init文件拷貝 按機器設(shè)備device來寫roamer是N760的設(shè)備型號kernel官方提取,boot.img提取 提取可以使用國外高手制作的廚 房軟件recovery.fstab手機分區(qū)表p 可有可無從官方rom 提取,比如n760 boot.img里面提取的init.roamer.rc 文件 這個也是需要這些文件的.首先我們寫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 的信息,可以通過廚房 查看到,我模糊 的記得用廚房解壓boot.img的時候的選項應(yīng)該是 打開廚房,選擇0高級,然后選擇20,再選擇 S就能看到下面這三個信息了# 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# 一般情況下,手機沒有實體返回鍵,建議選擇這一項,有的手機觸 摸返回鍵在recovery下面不能使用的,比如小米手機。BOAR

21、D_HAS_NO_SELECT_BUTTON := true# 編譯 recovery 指 定keymap文件,看參數(shù)名稱就知道了,不懂的可以google翻譯device_roamer.mk這個是編譯recovery的時候我寫的,有些東西可以 不要,以后編譯rom的時候需要刪除重寫的#語言配置文件$(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私有庫配置文件$(call inherit-product-if-exists, vendor/zte/roamer/roamer-vendor.mk)#有些你需要對應(yīng)用或者fra

溫馨提示

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

評論

0/150

提交評論