Android编译6.0系统源码(vmware)完美爬坑
一、环境搭建
1、系统:Ubuntu 16.04.6 LTS (Xenial Xerus) amd64
推荐阿里镜像站下载,速度比ubuntu官网快
地址:https://developer.aliyun.com/mirror/
下载完成后开始安装到虚拟机,由于使用VMware Workstation 15 Pro偶尔会出现莫名其妙的问题,比如大小写错乱,鼠标滚轮卡顿等,本文使用的是 VMware Workstation 12 Pro 12.5.4 build-5192485 版本
步骤:
新建虚拟机选择(典型) --> 稍后安装系统 --> Linux( Ubuntu 64位 ) -->选择虚拟机保存位置
--> 磁盘分配推荐100G左右(储存为单个文件) --> 自定义硬件 --> 完成 --> 开机
ubuntu 安装取消勾选安装时下载更新会安装的快些,然后一直下一步,清除磁盘那一步可能会慢些,但并不是卡死了,而是正在格式化磁盘。
安装到正在下载文件的时候可以直接点击skip跳过下载继续安装,安装完成重启。
安装界面点的重启按钮会卡在重启界面里,黑屏。这里需要手动重启虚拟机,之后就等待重启到登录界面
登录成功后是这样子的。屏幕显示的非常小,设置里调整分辨率无果,全部选项都是Unknown Display,可能是由于没安装vmware tools的原因造成的吧。
这里借鉴下别人的解决方式:https://blog.csdn.net/xuguokun1986/article/details/52072575
可以使用xrandr命令调节分辨率
终端命令:
ctrl+t
xrandr
出现如下界面,带*号的即使当前的分辨率
终端命令:
xrandr -s 1440x900
即可设置分辨率为1440x900 (x是英文字母小写),此命令只是作为临时设置,重启后会变回原来的设置
如果想永久设置成选定分辨率则需要重新输入命令
终端:
xrandr --output Virtual1 --mode 1440x900
不知道是不是VMware Workstation 12 虚拟机管理工具的问题还是系统本身的问题,在vm12上
xrandr --output Virtual1 --mode 1440x900 命令在重启后还是一样会变回原来的分辨率,或许更高版本的不会出现这样的情况,在此也不做过多的试验了,重点只要能解决问题,稳定运行就ok
分辨率永久修改,并跟随虚拟机窗口大小自动调整,在vm12 里需要安装 vmware tools
点击虚拟机 --> 安装vmware Tools
此时系统自动装在vmware tools光盘镜像。进入光盘如果没有显示出光盘内容,需要弹出光盘,再次点击安装vmware Tools装载
右键vmware Tools-xxx.tar.gz 提取到指定文件夹内
本文解压到Home路径里,进入解压目录,右键鼠标选择在终端打开,终端自动切换到本目录
手动安装,需要手动确认,一路回车
终端命令:
sudo -s //管理员权限
./vmare-install.pl
全自动安装命令
终端命令:
./vmare-install.pl -d
安装成功,出现如下界面:
2、open jdk 安装
Ubuntu16.04的软件源已经默认没有openjdk1.7了,所以要自己手动添加仓库:
终端命令:
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
由于jdk1.7的安装源是国外的,敲下回车开始漫长的等待....安装完成后环境变量是自动设置的
检查是否安装并设置成功
终端命令:
java -version
如果配置正确验证如下图为成功
3、更换软件源
爬坑之际,各种百度,google,试过清华源,中科大,阿里源 等千篇一律的修改 sources.list 文件,其实都并没有什么卵用,都在最后安装依赖的时候各种报错,各种依赖问题(只是对于本版本来说,其他版本不知道)
最简单的方法,在系统设置里选择软件源,而不是手动修改文件去设置,对于本篇所需的依赖,只有华为源成功安装
选择完关闭,重新载入列表,相当于 : sudo apt-get update ,速度也是杠杠的
4、安装依赖
爬坑2天,最终选择华为源才得以顺利安装
一个一个装
终端命令:
sudo -s
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install lib32z-dev ccache
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
在此奉上已安装好环境vmware镜像,珍爱生命,少走弯路,ctrl多锻炼
链接:https://pan.baidu.com/s/1Ttxv3BvhaTOc9Cpfb3rDEQ 提取码:ajym
5、源码下载
最简单的因属于网盘下载吧
链接:https://pan.baidu.com/s/1FP2Lfcizi2WHbTCFV9HrMg 提取码:r9li
当然也是可以repo同步,祥见文章末尾推荐参考
因为虚拟机系统已经安装了vmware tools,所以下载下来的源码压缩包可以直接复制粘贴到虚拟机里,并解压
解压目录不要有中文,中文目录可能会出现莫名其妙的问题
二、编译
进入源码根目录
修改文件 /art/build/Android.common_build.mk
2个true都改为 false
见下图修改后
正式开始编译:
在 .bashrc文件末尾添加:export USE_CCACHE = 1
终端命令:
echo export USE_CCACHE=1 >> ~/.bashrc
为了提高编译效率,设置编译器高速缓存:
终端命令:
prebuilts/misc/linux-x86/ccache/ccache -M 50G
导入编译脚本
终端命令:
source build/envsetup.sh
lunch
输入序号选择编译目标
开始编译,执行make -j8, 8为同时编译的线程数,一般google推荐这个数字为2倍的cpu个数再加上2,比如4核,就是10。
终端命令:
make -j8
漫长的等待.....
编译完成后输出如下:
终端命令:
emulator //启动模拟器
至此,成功编译并运行,第一次启动稍微慢点。
三、问题
(1)emulator: WARNING: system partition size adjusted to match image file (1280 MB > 200 MB)
emulator: WARNING: data partition size adjusted to match image file (550 MB > 200 MB)
emulator: ERROR: x86 emulation currently requires hardware acceleration!Please ensure KVM is properly installed and usable.CPU acceleration status: KVM is not installed on this machine (/dev/kvm is missing).
其实注意看也是一眼就能看出什么问题了,CPU未开启虚化造成,可以在创建虚拟机的时候直接勾选
解决方式:
参考资料:
清华大学开源软件镜像站 https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/官方源码下载文档https://source.android.com/setup/downloadingrepo命令参考资料 https://source.android.com/setup/using-repo.html
参考文章
https://blog.csdn.net/lookinthefog/article/details/98677773