注意:本小節,介紹的源碼指的是「20170803」以及後續新增的源碼。java
5.4.1.1 uboot 的編譯android
Android4.4.4 對應 uboot 的源碼,編譯器,參數配置,編譯腳本以及編譯參數和git
Android4.0.3 的 uboot 所有如出一轍。vim
5.4.1.2 Linux 內核的編譯瀏覽器
源碼目錄jvm
網盤下載 Android4.4.4 對應的源碼。在網盤「iTOP-4412 開發板系統源碼及鏡像(其ui
他)」→「android_4.4.4 源碼及鏡像」目錄下,在最新日期的文件夾下的「iTop4412-內存
android4.4-kernel_xxxx.tar.gz」壓縮包,xxxx 表示日期。開發
編譯器get
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%,則是空間不足。