iTOP4412開發板Android4.4原始碼編譯分享
注意:本小節,介紹的原始碼指的是“20170803”以及後續新增的原始碼。
5.4.1.1 uboot 的編譯
Android4.4.4 對應 uboot 的原始碼,編譯器,引數配置,編譯指令碼以及編譯引數和
Android4.0.3 的 uboot 全部一模一樣。
5.4.1.2 Linux 核心的編譯
原始碼目錄
網盤下載 Android4.4.4 對應的原始碼。在網盤“iTOP-4412 開發板系統原始碼及映象(其
他)”→“android_4.4.4 原始碼及映象”目錄下,在最新日期的資料夾下的“iTop4412-
android4.4-kernel_xxxx.tar.gz”壓縮包,xxxx 表示日期。
編譯器
Android4.4.4 對應核心的編譯器和 Android4.0.3 的核心編譯器一模一樣。
引數配置
核心的編譯是組合式配置檔案,基本的配置檔名是“config_for_android_XX_YY”,
XX,YY 表示用下表所示的引數替代。POP 和 SCP 分別對應核心板的 POP 和 SCP;elite 和
super 分別對應精英版和全能版;no_wifi 引數僅用於精英版,表示不支援 WiFi 模組(如果沒
有 WiFI 模組,那麼就需要配置為 no_wifi)。
如上表所示,如果需要 Android4.4.4 支援 WiFi,則需要配置對應的引數,不支援 WiFi
也需要進行對應配置。
編譯生成核心映象舉例
和 Android4.0.3 核心一樣,如果需要編譯對應核心板的核心,首先使用 cp 命令將對應
的配置檔案覆蓋掉“.config”。
如果使用者要使用 5 寸螢幕,先要參考使用者手冊“5.5 支援 5 寸屏的核心補丁檔案”,給內
核打補丁,然後使用命令“vim .config”,在檔案中搜索關鍵詞
“CONFIG_TOUCHSCREEN_GT9XX=y”,在“CONFIG_TOUCHSCREEN_GT9XX=y”之
後新增一行“CONFIG_TOPEET_LCD5X0=y”,新增完成之後,如下圖所示。如果使用者不使
用 5 寸螢幕,則可以跳過這一步。
最後執行編譯命令“make zImage”。
生成核心映象的目錄也是“arch”-->“arm”-->“boot”。
例如:開發板是精英版,POP 核心板,需要支援 WiFi 模組,那麼預設檔案就需要配置為
“config_for_android_pop_elite”。
開發板是精英版,POP 核心板,不支援 WiFi 模組,那麼預設檔案就需要配置為
“config_for_android_pop_no_wifi”。
5.4.1.3 Android4.4.4 的編譯
更新環境 javap
編譯 Android4.4.4,還缺少一個“javap”命令,使用命令:
“update-alternatives --install "/usr/bin/javap" "javap"
"/usr/lib/jvm/jdk1.6.0_43/bin/javap" 1”
更新一下,如下圖所示。
核心以及 Android 原始碼路徑
編譯 Android4.4 原始碼的時候,一定要注意核心原始碼的目錄。在和 Android 原始碼目錄
“ iTop4412_KK4.4_git ”的同一級目錄下,將核心原始碼解壓。
例如,如下圖所示,作者將核心原始碼和 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”目錄下就是核心原始碼。
另外在編譯 Android4.4 之前,必須成功編譯 Android4.4 對應的核心。
然後進入 Android4.4.4 原始碼解壓後得到資料夾“iTop4412_KK4.4_git”中,使用命令
“./build_android.sh”,執行一鍵編譯指令碼,開始編譯 Android4.4.4。注意:編譯
Android4.4.4 必須保證給 Ubuntu 系統提供 3G 以上記憶體。這裡“提供 3G 以上記憶體”的意
思,不僅僅是指在 VMware Workstations 虛擬機器中設定分配 3G 記憶體。例如,使用者在編譯的
時候,PC 機的記憶體一共是 4G,在虛擬機器中設定分配 3G 記憶體,但是在 Windows 系統下,開
著 QQ,防毒軟體,音樂播放器,瀏覽器等等,這樣在 Windows 下佔用的記憶體就快 2G 了,
那麼虛擬機器會自動調整到只佔用 2G,甚至不到 2G 的記憶體,這樣是沒法編譯通過的。
正確的分配記憶體方法是,首先給虛擬機器分配 3G 以上記憶體,然後在 Windows 下關掉儘量
多的不必要的應用,關掉儘量多應用的後臺程式。
當然,如果使用者的 PC 是 8G 或者 16G 記憶體,隨意就成。
編譯完成之後,在資料夾“iTop4412_KK4.4_git/out/target/product/smdk4x12”中,
生成映象“system.img”和“ramdisk-uboot.img”。
這裡還需要注意的是,Android4.4.4 原始碼需要佔用較大的空間,使用者需要確認有足夠的
空間才能夠成功編譯。Android4.0.3 編譯完成後總共大約佔用 18G 的空間,Android4.4.4 編
譯完成後總共佔用大約 36G 的空間。
使用者完全按照步驟編譯錯誤,可以使用“df -l”檢視一下碟符剩餘空間還剩下多少,如果
是已使用 100%,