Android4.4.4 的內(nèi)核以及文件系統(tǒng)的源碼在網(wǎng)盤“iTOP4412 開發(fā)板資料匯總(不含光盤內(nèi)容)\iTOP-4412開發(fā)板系統(tǒng)源碼及鏡像(其他)\android_4.4.4 源碼以及對(duì)應(yīng) Kernel 源碼”目錄下。![]() 需要注意的是,其中“20170803”以及后續(xù)新增的目錄下的源碼編譯方法參考本小節(jié),在“20170803”之前的源碼編譯參考 7.4.2 小節(jié)。 另外,由于 eMMC 升級(jí)和屏幕升級(jí),如果用戶是 2018 年或者之后購買的開發(fā)板,或者新購買了金屬框 7 寸屏/10.1 寸屏,請(qǐng)直接下載“2018xxx”目錄下上傳的內(nèi)核代碼和鏡像測(cè)試,Android 源碼和 20170803通用,編譯方法參考 7.4.1 小節(jié)。 8.1 搭建編譯環(huán)境 編譯安卓 4.4 使用 Ubuntu12.04,配置方法和 Android4.0 相同。編譯 uboot 和內(nèi)核使用的編譯器和 編譯Android4.0.3 的內(nèi)核編譯器一模一樣(使用 arm2009-q3)。編譯 Android4.4 文件系統(tǒng)相關(guān)的配置方法參考9.4 章節(jié) 8.2 編譯 U-boot Android4.4.4 對(duì)應(yīng) uboot 的源碼,編譯器,參數(shù)配置,編譯腳本以及編譯參數(shù)和 Android4.0.3 的 uboot全部一模一樣,可參考“8.3 編譯 U-boot”章節(jié)。 8.3 編譯 Linux 內(nèi)核 Android4.4 對(duì)應(yīng)的 Linux 內(nèi)核在網(wǎng)盤“iTOP4412 開發(fā)板資料匯總(不含光盤內(nèi)容)\iTOP-4412 開發(fā)板系統(tǒng)源碼及鏡像(其他)\android_4.4.4 源碼及鏡像\xxxx\Android4.4-Source”目錄下,在最新日期的文件夾下的“iTop4412- android4.4-kernel_xxxx.tar.gz”壓縮包,xxxx 表示日期。 內(nèi)核的編譯器和 Android4.0.3 的內(nèi)核編譯器一模一樣(arm-2009q3)。 內(nèi)核的編譯需要對(duì)應(yīng)的配置文件,基本的配置文件名是“config_for_android_XX_YY”,XX,YY 表示用下表所示的參數(shù)替代。POP 和 SCP 分別對(duì)應(yīng)核心板的 POP 和 SCP;elite 和 super 分別對(duì)應(yīng)精英版和全能版;no_wifi 參數(shù)僅用于精英版,表示不支持 WiFi 模塊,如果沒有 WiFI 模塊,那么就需要配置為 no_wifi。 ![]() 如上表所示,如果需要 Android4.4.4 支持 WiFi,則需要配置對(duì)應(yīng)的參數(shù),不支持 WiFi 也需要進(jìn)行對(duì)應(yīng)配置。 編譯生成內(nèi)核鏡像舉例 和 Android4.0.3 內(nèi)核一樣,如果需要編譯對(duì)應(yīng)核心板的內(nèi)核,首先使用 cp 命令將對(duì)應(yīng)的配置文件覆蓋掉“.config”。 如果用戶要使用 5 寸屏幕,先要參考用戶手冊(cè)“7.6 支持 5 寸屏的內(nèi)核補(bǔ)丁文件”,給內(nèi)核打補(bǔ)丁,然 后 使 用 命 令 “ vim .config ” , 在 文 件 中 搜 索 關(guān) 鍵 詞 “ CONFIG_TOUCHSCREEN_GT9XX=y ” , 在 “CONFIG_TOUCHSCREEN_GT9XX=y”之后添加一行“CONFIG_TOPEET_LCD5X0=y”,添加完成之后,如下圖所示。如果用戶不使用 5 寸屏幕,則可以跳過這一步。 ![]() 最后執(zhí)行編譯命令“make zImage”。 生成內(nèi)核鏡像的目錄也是“arch\arm\boot”。 例如:開發(fā)板是精英版,POP 核心板,需要支持 WiFi 模塊,那么缺省文件就需要配置為“config_for_android_pop_elite”。 開 發(fā) 板 是 精 英 版 , POP 核 心 板 , 不 支 持 WiFi 模 塊 , 那 么 缺 省 文 件 就 需 要 配 置 為“config_for_android_pop_no_wifi”。 8.4 編譯 Android4.4.4 文件系統(tǒng) 編譯 Android4.4.4,還缺少一個(gè)“javap”命令,使用命令: update-alternatives --install "/usr/bin/javap" "javap" "/usr/lib/jvm/jdk1.6.0_43/bin/javap" 1更新一下,如下圖所示。 ![]() 編 譯 Android4.4 源 碼 的 時(shí) 候 , 一 定 要 注 意 內(nèi) 核 源 碼 的 目 錄 。 在 和 Android 源 碼 目 錄“iTop4412_KK4.4_git ”的同一級(jí)目錄下,將內(nèi)核源碼解壓。 例如,如下圖所示,作者將內(nèi)核源碼和 Android4.4 源碼壓縮包放到“/home/iTOP- 4412-Android4.4”目錄下,解壓“iTop4412_KK4.4_git_xxx.tar.gz”和“iTop4412- android4.4-kernel_xxx.tar.gz”,Android 源碼解壓之后得到“iTop4412_KK4.4_git”和“kernel” 目錄。“iTop4412_KK4.4_git” 目錄下就是 Android 源碼 ,“kernel/iTop4412_Kernel_3.0”目錄下就是內(nèi)核源碼。 ![]() 另外在編譯 Android4.4 之前,必須成功編譯 Android4.4 對(duì)應(yīng)的內(nèi)核。 然后進(jìn)入 Android4.4.4 源碼解壓后得到文件夾“iTop4412_KK4.4_git”中,使用命令“./build_android.sh”運(yùn)行一鍵編譯腳本,開始編譯 Android4.4.4。 注意:編譯 Android4.4.4 必須保證給 Ubuntu 系統(tǒng)提供 3G 以上內(nèi)存。這里“提供 3G 以上內(nèi)存”的意思,不僅僅是指在 VMware Workstations 虛擬機(jī)中設(shè)置分配 3G 內(nèi)存。例如,用戶在編譯的時(shí)候,PC 機(jī)的內(nèi)存一共是 4G,在虛擬機(jī)中設(shè)置分配 3G 內(nèi)存,但是在 Windows 系統(tǒng)下,開著 QQ,殺毒軟件,音樂播放器,瀏覽器等等,這樣在 Windows 下占用的內(nèi)存就快 2G 了,那么虛擬機(jī)會(huì)自動(dòng)調(diào)整到只占用 2G,甚至不到 2G 的內(nèi)存,這樣是沒法編譯通過的。 正確的分配內(nèi)存方法是,首先給虛擬機(jī)分配 3G 以上內(nèi)存,然后在 Windows 下關(guān)掉盡量多的不必要的應(yīng)用,關(guān)掉盡量多應(yīng)用的后臺(tái)程序。 當(dāng)然,如果用戶的 PC 是 8G 或者 16G 內(nèi)存,隨意就成。 編譯完成之后,在文件夾“iTop4412_KK4.4_git/out/target/product/smdk4x12”中,生成鏡像“system.img”和“ramdisk-uboot.img”。 這里還需要注意的是,Android4.4.4 源碼需要占用較大的空間,用戶需要確認(rèn)有足夠的空間才能夠成功編譯。Android4.0.3 編譯完成后總共大約占用 18G 的空間,Android4.4.4 編譯完成后總共占用大約 36G 的空間。 用戶完全按照步驟編譯錯(cuò)誤,可以使用“df -l”查看一下盤符剩余空間還剩下多少,如果是已使用 100%,則是空間不足。 8.5 編譯早期 Android4.4.4 舊源碼 注意:本小節(jié),介紹的舊源碼指的是“20170803”之前的早期源碼。 在網(wǎng)盤目錄中“iTOP4412 開發(fā)板資料匯總(不含光盤內(nèi)容)\iTOP-4412 開發(fā)板系統(tǒng)源碼及鏡像(其他)\android_4.4.4 源碼以及對(duì)應(yīng) Kernel 源碼”中下載 Android4.4.4 的 文件系統(tǒng),并通過 github 下載 uboot (Android4.4 的 uboot 源碼和 Android4.0.3 完全一樣) 和 kernel 的源碼(參考附錄六)。 編譯 uboot Android4.4.4 對(duì)應(yīng) uboot 的源碼,編譯器,參數(shù)配置,編譯腳本以及編譯參數(shù)和 Android4.0.3 的 uboot全部一模一樣。 編譯 Linux 內(nèi)核 網(wǎng)盤下載 Android4.4.4 對(duì)應(yīng)的源碼。在網(wǎng)盤“iTOP4412 開發(fā)板資料匯總(不含光盤內(nèi)容)\iTOP-4412 開發(fā)板系統(tǒng)源碼及鏡像(其他)\android_4.4.4 源碼及鏡像”目錄下。 Android4.4.4 對(duì)應(yīng)內(nèi)核的編譯器和 Android4.0.3 的內(nèi)核編譯器一模一樣。內(nèi)核的編譯是組合式配置文件,基本的配置文件名是“config_for_android_YY”,YY 表示用下表所示的參數(shù)替代。 ![]() 如上表所示,如果需要 Android4.4.4 支持 WiFi,則需要配置對(duì)應(yīng)的參數(shù)。 編譯生成內(nèi)核鏡像舉例: 和 Android4.0.3 內(nèi)核一樣,如果需要編譯對(duì)應(yīng)核心板的內(nèi)核,首先使用 cp 命令將對(duì)應(yīng)的配置文件覆蓋掉”.config”,然后在執(zhí)行編譯命令“make zImage”。生成內(nèi)核鏡像的目錄也是“arch”-->“arm”-->“boot”。 編譯 Android4.4.4 (文件系統(tǒng)部分) Android4.4.4 源碼在網(wǎng)盤“iTOP-4412 開發(fā)板系統(tǒng)源碼及鏡像(其他)\android_4.4.4 源碼以及對(duì)應(yīng) Kernel 源碼”目錄中下載,編譯器和參數(shù)配置和 Android4.0.3 一模一樣。 更新環(huán)境 javap 編譯 Android4.4.4,還缺少一個(gè)“javap”命令,使用命令:“update-alternatives --install "/usr/bin/javap" "javap" "/usr/lib/jvm/jdk1.6.0_43/bin/javap" 1”更新一下,如下圖所示。 ![]() 源碼下載 內(nèi)核的源碼也可以在 github 上下載,具體參考使用手冊(cè)附錄 6.2,附錄中有迅為 Android4.4 對(duì)應(yīng)內(nèi)核源碼 github 下載地址。 使用手冊(cè)附錄中有介紹 repo 下載 Android4.4.4 源碼的方法,但是從 2016 開始,repo 經(jīng)常性的無法下載和使用。所以最好到迅為百度網(wǎng)盤中下載源碼(目錄參考使用手冊(cè)編譯章節(jié)),選取日期最近的目錄下載即可。 網(wǎng)盤中源碼包一般是 gz 后綴、7z 或者 rar 后綴。gz 后綴可以直接在 Ubuntu 下解壓; 7z 和 rar 后綴都是需要先在 windows 下解壓出 gz 后綴壓縮包,然后再在 Ubuntu 下解壓。 內(nèi)核以及 Android 源碼路徑 編 譯 Android4.4.4 源 碼 的 時(shí) 候 , 一 定 要 注 意 內(nèi) 核 源 碼 的 目 錄 。 在 和 Android 源 碼 目 錄“iTop4412_KK4.4_git”的同一級(jí)目錄下,新建一個(gè) kernel 目錄,然后將內(nèi)核源碼放到 kernel 目錄下,要使用迅為默認(rèn)的文件名“iTop4412_Kernel_3.0”。 例如:在 Android4.4 的源碼目錄下,使用命令“l(fā)s ../kernel/iTop4412_Kernel_3.0/”,如下圖所示,內(nèi)核的目錄才是正確的。 ![]() 另外在編譯 Android4.4 之前,必須成功編譯 Android4.4 對(duì)應(yīng)的內(nèi)核。 然后進(jìn)入 Android4.4.4 源碼解壓后得到文件夾“iTop4412_KK4.4”中,使用命令“./build_android.sh”運(yùn)行一鍵編譯腳本,開始編譯 Android4.4.4。注意:編譯 Android4.4.4 必須保證給 Ubuntu 系統(tǒng)提供 3G 以上內(nèi)存。這里“提供 3G 以上內(nèi)存”的意思,不僅僅是指在 VMware Workstations 虛擬機(jī)中設(shè)置分配 3G 內(nèi)存。例如,用戶在編譯的時(shí)候,PC 機(jī)的內(nèi)存一共是 4G,在虛擬機(jī)中設(shè)置分配 3G 內(nèi)存,但是在 Windows系統(tǒng)下,開著 QQ,殺毒軟件,音樂播放器,瀏覽器等等,這樣在 Windows 下占用的內(nèi)存就快 2G 了, 那么虛擬機(jī)會(huì)自動(dòng)調(diào)整到只占用 2G,甚至不到 2G 的內(nèi)存,這樣是沒法編譯通過的。正確的分配內(nèi)存方法是,首先給虛擬機(jī)分配 3G 以上內(nèi)存,然后在 Windows 下關(guān)掉盡量多的不必要的應(yīng)用,關(guān)掉盡量多應(yīng)用的后臺(tái)程序。 當(dāng)然,如果用戶的 PC 是 8G 或者 16G 內(nèi)存,隨意就成。 ![]() 如下圖所示,編譯完成。在文件夾“iTop4412_KK4.4/out/target/product/smdk4x12”中,生成鏡像 “system.img”和“ramdisk-uboot.img”。 ![]() 這里還需要注意的是,Android4.4.4 源碼需要占用較大的空間,用戶需要確認(rèn)有足夠的空間才能夠成功編譯。Android4.0.3 編譯完成后總共大約占用 18G 的空間,Android4.4.4 編譯完成后總共占用大約 36G 的空間,如下圖。 ![]() 用戶完全按照步驟編譯錯(cuò)誤,可以使用“df -l”查看一下盤符剩余空間還剩下多少,如下圖所示,如果是已使用 100%,則是空間不足。 ![]() 內(nèi)核源碼包是“iTop4412-android4.4-kernel_20180724.tar.gz”,一定要是 20180724 結(jié)尾的內(nèi)核壓縮包才行,如果用戶使用的是老版本,則需要根據(jù)補(bǔ)丁文件添加代碼。 補(bǔ)丁包是網(wǎng)盤“iTOP4412 開發(fā)板資料匯總(不含光盤內(nèi)容)\iTOP-4412 開發(fā)板系統(tǒng)源碼及鏡像(其他)\android_4.4.4 源 碼 以 及 對(duì) 應(yīng) Kernel 源 碼 \20180724\Android4.4-Source ” 目 錄 下 的 壓 縮 包“patch_elite4x4_lcd5x0.tar.gz”。 拷貝到內(nèi)核源碼目錄下(一定要拷貝到內(nèi)核源碼的目錄下),如下圖所示,使用命令“tar -vxfpatch_elite4x4_lcd5x0.tar.gz”解壓得到文件夾“patch_elite4x4_lcd5x0”,文件夾中有 5 個(gè)補(bǔ)丁文件,1 個(gè)腳本文件。 ![]() 進(jìn)入解壓得到的文件夾“patch_elite4x4_lcd5x0”,使用命令“ chmod 777 script_patch_elite4x4_lcd5.sh”修改腳本權(quán)限。 接著使用“./script_patch_elite4x4_lcd5.sh u”命令,到這一步就打完補(bǔ)丁了,如下圖所示。 ![]() 如果需要返回到更新補(bǔ)丁前的狀態(tài),則使用命令“./script_patch_elite4x4_lcd5.sh r”。 用 戶 在 “ iTop4412-android4.4-kernel_20180724.tar.gz ” 原 始 內(nèi) 核 的 基 礎(chǔ) 上 , 運(yùn) 行 了“./script_patch_elite4x4_lcd5.sh u”N 次,則可以使用命令“./script_patch_elite4x4_lcd5.sh r”同樣也是 N 次,則可以返回到打補(bǔ)丁前的狀態(tài)。 更多內(nèi)容:?jiǎn)袅▎袅ā阉鞅本┭笧?br /> |