注意:本小节,介绍的源码指的是“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%,则是空间不足。