说明:
(1) 以Ubuntu16.04为模板创建虚拟机,然后下载android x86的oreo-x86版本进行编译生成ISO镜像。
(2) 硬盘配置250G,内存配置12G。(代码大致就要占用51G,内存配置为4G最后会提示内存不足无法进行编译)。
1.搭建Ubuntu虚拟机环境。
2.安装openssh-server
apt-get install openssh-server
3.设置代理
1)GIT代理设置
git config --global http.proxy http://ipAddress:Port
git config --global https.proxy https://ipAddress:Port
git config --global user.name “stone”
git config --global user.email "xxx@xx.com"
2)REPO代理设置
export http_proxy=http://ipAddress:Port
export https_proxy=https://ipAddress:Port
4.安装Git
sudo apt-get install git
5.安装Repo
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
6.安装和配置samba
1)安装samba
apt-get install samba
2)配置samba
关于Samba服务:共享“/”目录与“/root”目录
在/etc/samba/smb.conf文件中添加:
[sd]
path = /
valid users = root
browseable = yes
writeable = yes
然后执行:
smbpasswd -a root 设置用户密码
再执行:
systemctl restart smbd
7.Android X86代码下载
cd /home
mkdir android-x86
cd android-x86
mkdir oreo-x86
cd oreo-x86
repo init -u git://git.osdn.net/gitroot/android-x86/manifest -b oreo-x86
repo sync --no-tags --no-clone-bundle
8.编译环境准备
1)安装JDK
如果 Ubuntu >= 15.04
请运行以下命令:
apt-get update
apt-get install openjdk-8-jdk
2)安装所需的程序包
apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g+±multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip libssh-dev python-mako
3)使用单独的输出目录
export OUT_DIR_COMMON_BASE=
4)安装调试工具。
在Ubuntu上执行以下命令:
apt-get install valgrind
5)配置jdk到
P
A
T
H
中
c
d
/
h
o
m
e
/
t
o
o
l
s
t
a
r
−
x
z
v
f
j
d
k
−
8
u
201
−
l
i
n
u
x
−
x
64.
t
a
r
.
g
z
P
A
T
H
=
PATH中 cd /home/tools tar -xzvf jdk-8u201-linux-x64.tar.gz PATH=
PATH中cd/home/toolstar−xzvfjdk−8u201−linux−x64.tar.gzPATH=PATH:/home/tools/jdk1.8.0_201/bin:/home/tools/jdk1.8.0_201/jre/bin
9.编译Android X86镜像
cd oreo-x86
. build/envsetup.sh
lunch android_x86-eng
m -jX iso_img //X指并发数,比如1, 2
10.常见错误
1)repo init、mkdir等多个命令报没有权限
原因:Ubuntu18默认没有root账户
解决办法:Ubuntu18创建ROOT账户以及登录过程见下链接
https://blog.csdn.net/weixin_41923456/article/details/81001179
2)apt-get install curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
解决办法:
强制解锁命令
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
(见https://www.cnblogs.com/drizzlewithwind/p/5922414.html)
3)javac:command not found
根本原因:没有配置jdk
解决办法:解压jdk-8u201-linux-x64.tar.gz,并设置相关路径到系统PATH中。
https://blog.csdn.net/lyl_lyf/article/details/48767143
4)GC overhead limit exceeded
根本原因:内存不足
解决办法:
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx12g"
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server
参考见: https://blog.csdn.net/csdn_zyp2015/article/details/56277765
5)Kernel/scripts/extract-cert.c:21:25: fatal error: openssl/bio.h: No such file or directory
根本原因:缺少依赖库ssl头文件
解决办法:apt-get install libssh-dev
6)File “external/mesa/src/compiler/nir/nir_opcodes_h.py”, line 45, in from mako.template import Template
ImportError: No module named mako.template
解决方法:apt-get install python-mako
11.参考链接
https://blog.csdn.net/weixin_41923456/article/details/81001179
https://www.cnblogs.com/drizzlewithwind/p/5922414.html
https://blog.csdn.net/lyl_lyf/article/details/48767143
https://blog.csdn.net/csdn_zyp2015/article/details/56277765