安装指南(andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp...

56
鲲鹏云手机解决方案 安装指南(Andriod 模拟器) 文档版本 07 发布日期 2020-08-20 华为技术有限公司

Upload: others

Post on 15-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

鲲鹏云手机解决方案

安装指南(Andriod 模拟器)

文档版本 07

发布日期 2020-08-20

华为技术有限公司

Page 2: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

版权所有 © 华为技术有限公司 2020。 保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。 商标声明

和其他华为商标均为华为技术有限公司的商标。本文档提及的其他所有商标或注册商标,由各自的所有人拥有。 注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或默示的声明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 i

Page 3: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

目 录

1 云手机解决方案 移植指南 (鲲鹏 916)..................................................................................... 11.1 介绍.............................................................................................................................................................................................. 11.2 环境要求......................................................................................................................................................................................21.3 鲲鹏 916 编译环境准备和组件编译构建............................................................................................................................ 21.3.1 准备编译环境..........................................................................................................................................................................31.3.2 构建(android-sdk-linux)tools 目录下部件............................................................................................................... 31.3.3 构建(android-sdk-linux)platform-tools 目录下部件.............................................................................................91.4 x86 编译环境准备和组件编译构建.......................................................................................................................................91.4.1 准备编译环境..........................................................................................................................................................................91.4.2 构建(android-sdk-linux)platforms 目录下部件....................................................................................................101.4.3 构建(android-sdk-linux)system-images 目录下部件......................................................................................... 111.4.3.1 构建 aosp-7.0.0_r35 的 system-images 目录..........................................................................................................121.4.3.2 构建 aosp9.0.0_r10 的 system-images 目录........................................................................................................... 131.5 目标 Arm 运行环境准备和运行指导..................................................................................................................................141.5.1 基于鲲鹏服务器的 Android 模拟器环境搭建指导......................................................................................................14

2 云手机解决方案 移植指南 (鲲鹏 920)................................................................................... 152.1 介绍............................................................................................................................................................................................ 152.2 环境要求................................................................................................................................................................................... 162.3 鲲鹏 920 编译环境准备和组件编译构建.......................................................................................................................... 162.3.1 编译环境准备....................................................................................................................................................................... 172.3.2 构建(android-sdk-linux)tools 目录下部件............................................................................................................. 172.3.3 构建(android-sdk-linux)platform-tools 目录下部件.......................................................................................... 232.4 x86 编译环境准备和组件编译构建.................................................................................................................................... 232.4.1 准备编译环境....................................................................................................................................................................... 232.4.2 构建(android-sdk-linux)platforms 目录下部件....................................................................................................242.4.3 构建(android-sdk-linux)system-images 目录下部件......................................................................................... 262.4.3.1 构建 aosp-7.0.0_r35 的 system-images 目录..........................................................................................................262.4.3.2 构建 aosp9.0.0_r10 的 system-images 目录........................................................................................................... 272.5 目标 Arm 运行环境准备和运行指导..................................................................................................................................282.5.1 基于鲲鹏服务器的 Android 模拟器环境搭建指导......................................................................................................28

3 安卓模拟器 安装指南(Ubuntu18.04)............................................................................... 303.1 介绍............................................................................................................................................................................................ 30

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 目 录

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 ii

Page 4: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

3.2 环境要求................................................................................................................................................................................... 303.3 配置安装环境...........................................................................................................................................................................313.3.1 修改 大打开文件数限制................................................................................................................................................. 323.3.2 配置 SSH 服务......................................................................................................................................................................323.3.3 更新 APT................................................................................................................................................................................333.4 搭建 Android SDK.................................................................................................................................................................. 343.5 运行和验证............................................................................................................................................................................... 353.5.1 运行前准备(GPU 场景)................................................................................................................................................ 353.5.2 执行命令创建和运行 AVD................................................................................................................................................ 353.5.2.1 启动桌面服务....................................................................................................................................................................353.5.2.2 创建 AVD........................................................................................................................................................................... 373.5.2.3 启动 AVD........................................................................................................................................................................... 393.5.3 通过运行脚本批量创建和运行 AVD............................................................................................................................... 443.5.3.1 AVD 操作脚本介绍.......................................................................................................................................................... 443.5.3.2 操作 AVD 模板................................................................................................................................................................. 453.5.3.3 操作多 AVD....................................................................................................................................................................... 473.5.3.4 修改 AVD 分辨率............................................................................................................................................................. 503.5.3.5 删除 AVD........................................................................................................................................................................... 51

A 修订记录................................................................................................................................... 52

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 目 录

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 iii

Page 5: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

1 云手机解决方案 移植指南 (鲲鹏 916)

1.1 介绍

1.2 环境要求

1.3 鲲鹏916编译环境准备和组件编译构建

1.4 x86编译环境准备和组件编译构建

1.5 目标Arm运行环境准备和运行指导

1.1 介绍

简要介绍

本文档目的是指导如何构建基于鲲鹏计算框架的云手机解决方案,编译环境需要2台服务器,1台鲲鹏916计算平台的编译环境,1台x86平台的编译环境,构建生成 终运行在鲲鹏916计算平台上的android-sdk-linux软件包。

建议的版本

表 1-1 建议的软件版本

软件 版本

AOSP源码 android-7.0.0_r35或android-9.0.0_r10

说明

本文档仅作为云手机解决方案环境编译搭建指导,不对后续容器运行性能提供任何保证。

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 1 云手机解决方案 移植指南 (鲲鹏 916)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 1

Page 6: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

1.2 环境要求

硬件要求

硬件要求如表1-2所示。

表 1-2 硬件要求

项目 说明

服务器1 TaiShan 100服务器

CPU1 华为鲲鹏916处理器

磁盘分区1 对磁盘分区无要求

服务器2 x86平台服务器

CPU2 x86架构处理器

磁盘分区2 对磁盘分区无要求

操作系统要求

操作系统要求如表1-3所示。

表 1-3 操作系统要求

项目 版本

服务器1操作系统 Ubuntu 18.04.1

服务器1上虚拟机操作系统

Ubuntu 16.04.4

服务器2操作系统 Ubuntu 16.04.3

说明

如果是全新安装操作系统,安装方式建议不要使用 小化安装,否则很多软件包需要手动安装,可选择“Server with GUI”安装方式。

1.3 鲲鹏 916 编译环境准备和组件编译构建

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 1 云手机解决方案 移植指南 (鲲鹏 916)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 2

Page 7: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

1.3.1 准备编译环境操作系统Ubuntu 18.04.1的鲲鹏916服务器(物理机),在其上安装Ubuntu 16.04.4的虚拟机,Ubuntu 16.04.4的虚拟机用于编译emulator及相关依赖组件(虚拟机的内存至少大于16G)。

步骤1 安装服务器1的操作系统。

Ubuntu 18.04.1的iso下载链接:

下载位置:http://old-releases.ubuntu.com/releases/18.04.1/ubuntu-18.04.1-server-arm64.iso

鲲鹏916(物理机)上安装Ubuntu 18.04.1的安装指导:

参考: https://support.huawei.com/enterprise/zh/doc/EDOC1100052765

步骤2 在服务器1上安装操作系统为Ubuntu16.04.4的虚拟机。

镜像下载地址:http://mirrors.huaweicloud.com/ubuntu-cdimage/ubuntu/releases/16.04/release/ubuntu-16.04.4-server-arm64.iso

虚拟机安装可以参考https://bbs.huaweicloud.com/forum/thread-67347-1-1.html,也可以自行在网上找其他安装资料。

步骤3 安装编译所需的依赖。

apt update

apt -y install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

apt -y install libxt-dev libx11-dev libssl-dev libgl1-mesa-dev libpulse-dev

apt -y install libswt-gtk-4-java libswt-gtk-4-jni libswt-cairo-gtk-4-jni libswt-glx-gtk-4-jni libswt-gnome-gtk-4-jni libswt-webkit-gtk-4-jni

apt -y install libtool libgbm-dev gettext-doc libepoxy-dev libfdt-dev libpng++-dev

apt -y install llvm-3.5 clang flex bison scons libedit-dev ant libudev-dev

apt -y install git git-core curl repo openjdk-8-jdk-headless

ln -sf /usr/lib/aarch64-linux-gnu/libedit.so.2 /usr/lib/aarch64-linux-gnu/libedit.so

ln -sf /usr/bin/llvm-config-3.5 /usr/bin/llvm-config

----结束

1.3.2 构建(android-sdk-linux)tools 目录下部件

步骤1 从如下地址获取到代码仓,获取其中的aosp-on-qemu文件夹,上传至鲲鹏916上的“Ubuntu 16.04.4虚拟机”内。

https://code.opensource.huaweicloud.com/Kunpeng/Native/home

步骤2 代码仓根目录拷贝到android-sdk-linux项目目录构建,该目录用于存放 后编译出来的所有目标二进制文件。

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 1 云手机解决方案 移植指南 (鲲鹏 916)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 3

Page 8: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

cp -r aosp-on-qemu /home/$(YOUR_USER)/

mkdir –p /home/$(YOUR_USER)/android-sdk-linux //创建目标目录,后文记为$(ANDROID_SDK_LINUX_DIR)

cd $(ANDROID_SDK_LINUX_DIR)

mkdir tools //tools中将存放模拟器相关部件

mkdir platforms //platforms中将存放安卓平台API部件

mkdir system-images //system-images中将存放编译出来的安卓系统镜像

mkdir platform-tool //platform-tools中将存放adb二进制可执行文件

步骤3 下载Emulator代码(版本emu-master-dev)。

mkdir –p /home/$(YOUR_USER)$(YOUR_EmuMasterDev_DIR) //Android模拟器源码主目录

cd $(YOUR_EmuMasterDev_DIR)

repo init -u https://android.googlesource.com/platform/manifest-b emu-master-dev

repo sync -j32

//拷贝仓中根目录下 aosp-on-qemu/binaryAndFiles/snapshot_qemu_emu_B630.xml快照文件到.repo/manifests/目录下,对qemu的所有git仓进行代码回退

cp snapshot_qemu_emu_B630.xml /home/$(YOUR_USER)/$(YOUR_EmuMasterDev_DIR)/.repo/manifests/

cd /home/$(YOUR_USER)/$(YOUR_EmuMasterDev_DIR)

repo init -m snapshot_qemu_emu_B630.xml

repo sync -d -j32

步骤4 回退到指定提交分支。

cd external/qemu

git reset --hard 0e8e684fba9eadcc112067359f9f1027659f3918

git log //该命令可以查看提交记录,确认 后一次提交commit号为0e8e684fba9eadcc112067359f9f1027659f3918

步骤5 构建Emulator依赖库。

1. 删除Prebuilts下x86自带库文件mesa、qt、ANGLE。cd $(YOUR_EMUMASTERDEV_DIR)/prebuilts/android-emulator-buildrm -rf qt mesacd commonrm -rf ANGLE

2. 脚本安装编译所需依赖库。

获取代码仓根目录下的补丁:aosp-on-qemu/patchForEmuMasterDev/0002_prebuilds.patch:cd $(YOUR_EMUMASTERDEV_DIR)/external/qemu/

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 1 云手机解决方案 移植指南 (鲲鹏 916)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 4

Page 9: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

patch -p1 < 0002_prebuilds.patch运行脚本库文件:

cd $(YOUR_EMUMASTERDEV_DIR)/external/qemu/android/scripts/./build-curl.sh./build-qemu-android-deps.sh./build-e2fsprogs.sh./build-ffmpeg.sh./build-lz4.sh./build-libvpx.sh./build-libxml2.sh./build-libusb.shchmod +x build-x264.sh./build-x264.sh./build-virglrenderer.sh

3. 安装库文件(protobuf,breakpad)。a. 安装protobuf:执行安装脚本,代码仓根目录下: aosp-on-qemu/oneKey/build_protobuf.sh./build_protobuf.sh $(YOUR_EMUMASTERDEV_DIR)//注意输入参数$(YOUR_EMUMASTERDEV_DIR)b. 安装breakpad执行安装脚本,代码仓根目录下: aosp-on-qemu/oneKey/build_breakpad.sh./build_breakpad.sh $(YOUR_EMUMASTERDEV_DIR)//注意输入参数$(YOUR_EMUMASTERDEV_DIR)

4. 下载qt5.6.1源码。

下载地址:http://download.qt.io/new_archive/qt/5.6/5.6.1/single/qt-everywhere-opensource-src-5.6.1.tar.xz

5. 解压qt-everywhere-opensource-src-5.6.1.tar.xz。tar -xvJf qt-everywhere-opensource-src-5.6.1.tar.xz

6. 进入qt-everywhere-opensource-src-5.6.1目录。

cd qt-everywhere-opensource-src-5.6.17. 修改文件qtimageformats/src/3rdparty/libwebp/src/dsp/dsp.h,注释第68行 //

#define WEBP_USE_NEON。//#define WEBP_USE_NEON

8. 执行configure生成Makefile。./configure -v -opensource -confirm-license -force-debug-info -release -no-rpath -shared -nomake examples -nomake tests -no-strip -qt-xcb -c++std c++11 -qt-pcre -no-glib注:在生成Makefile时会报:Makefile:177: recipe for target 'xxx' failed和make:*** [xxx] Error 1为正常现象

9. 编译并安装。

make -j64make install

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 1 云手机解决方案 移植指南 (鲲鹏 916)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 5

Page 10: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

10. 创建qt依赖库目录。

cd $(YOUR_EMUMASTERDEV_DIR)/prebuilts/android-emulator-buildmkdir -p qt/linux-aarch64/pluginsmkdir -p qt/linux-aarch64/libmkdir -p qt/linux-aarch64/binmkdir -p qt/common/includecd qt/linux-aarch64ln -sf ../common/include include

11. 拷贝QT5.6.1到emulator的prebuilts目录下。

cd $(YOUR_EMUMASTERDEV_DIR)/prebuilts/android-emulator-buildcp -r /usr/local/Qt-5.6.1/lib/* qt/linux-aarch64/lib/cp -r /usr/local/Qt-5.6.1/bin/* qt/linux-aarch64/bin/cp -r /usr/local/Qt-5.6.1/plugins/* qt/linux-aarch64/plugins/cp -r /usr/local/Qt-5.6.1/include/* qt/common/include/

步骤6 源码编译Mesa。

合入补丁,补丁包位于代码仓根目录下:aosp-on-qemu/patchForEmuMasterDev/0003_build_mesa.patch

cd $(YOUR_EMUMASTERDEV_DIR)/external/qemu

patch -p1 < 0003_build_mesa.patch

./android/scripts/build-mesa-deps.sh

./android/scripts/build-mesa.sh

步骤7 源码编译ANGLE。

1. 编译安装ninja工具。

a. 下载ninja源码至/root/目录下,与脚本保持一致,

下载链接:https://github.com/ninja-build/ninja/releases/b. 执行命令解压,安装ninja。

tar -xf ninja-1.7.2.tar.gzcd /root/ninja-1.7.2./configure.py --bootstrapcp -r ninja /usr/bin

2. 运行脚本build-ANGLE.sh执行编译。

cd $(YOUR_EMUMASTERDEV_DIR)/external/qemu/android/scripts/./build-ANGLE.sh执行完成后对angle代码进行回退

cd /tmp/root-build-ANGLE-xxx/build-linux-aarch64/anglegit reset --hard c37c696b94bd7ddecc12a2c3192f5e48eae7842eninja -C out/Debugmkdir /home/anglecp -r /tmp/root-build-ANGLE-xxx/build-linux-aarch64/angle/out/Debug/obj /home/angle

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 1 云手机解决方案 移植指南 (鲲鹏 916)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 6

Page 11: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

cp -r /tmp/root-build-ANGLE-xxx/build-linux-aarch64/angle/out/Debug/lib /home/angle修改ANGLE脚本:build-ANGLE.sh,在脚本run ninja -C out/Debug处后面加一行,此行内容如下

cp -r /home/angle/* $PKG_BUILD_DIR/out/Debug/再执行一遍build-ANGLE.sh./build-ANGLE.sh

步骤8 Emulator代码合入补丁。

1. 在代码仓根目录aosp-on-qemu/patchForEmuMasterDev下找到补丁0001_emuMasterDev_qemu.patch。

2. 补丁拷贝到qemu目录下并合入。

cp 0001_emuMasterDev_qemu.patch $(YOUR_EMUMASTERDEV_DIR)/external/qemucd $(YOUR_EMUMASTERDEV_DIR)/external/qemugit checkout . //合入补丁前保证代码干净

patch -p1 < 0001_emuMasterDev_qemu.patch

步骤9 Emulator编译生成objs,然后将objs目录下的内容拷贝到tools目录下。

1. 环境变量设置(重要步骤):

export LD_LIBRARY_PATH=$(YOUR_EMUMASTERDEV_DIR)/prebuilts/android-emulator-build/qt/linux-aarch64/lib/

2. 编译。

cd $(YOUR_EMUMASTERDEV_DIR)/external/qemu

注意

若存在objs目录,说明这份代码之前有人编译过,首先删除其他人的编译信息,若不存在,则跳过下面两条命令。

make cleanrm –rf objs– 不带符号表版本编译

./android/configure.sh(易于debug)make -j64

– 带符号表版本编译

./android/configure.sh --symbolsmake -j64

3. 编译成功以后,将objs目录下的内容拷贝到android-sdk-linux目录下的tools目录中。

rm -rf $(YOUR_EMUMASTERDEV_DIR)/external/qemu/objs/buildcp -r $(YOUR_EMUMASTERDEV_DIR)/external/qemu/objs/* $(ANDROID_SDK_LINUX_DIR)/tools/

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 1 云手机解决方案 移植指南 (鲲鹏 916)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 7

Page 12: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

步骤10 编译swt.jar源码,然后将编译后的swt.jar拷贝到tools目录下。

1. 创建临时目录。

mkdir –p /home/$(YOUR_USER)/TEMP2. 在代码仓根目录下/aosp-on-qemu/oneKey中,获取swt-build.sh脚本,并放入

TEMP目录中。

cd TEMP./swt-build.sh //执行脚本构建swt.jar,生成位置TEMP/swt_dir/swt.jar

3. 将swt.jar拷贝至指定目录。

mkdir $(ANDROID_SDK_LINUX_DIR)/tools/lib/aarch64cp swt.jar $(ANDROID_SDK_LINUX_DIR)/tools/lib/aarch64/

步骤11 编译mksdcard源码,然后将编译后的mksdcard文件拷贝到tools目录下。

cd $(YOUR_EMUMASTERDEV_DIR)/sdk/emulator/mksdcard/src/source

gcc -o mksdcard mksdcard.c

将生成的mksdcard文件拷贝到 android-sdk-linux/tools/目录下:

cp mksdcard $(ANDROID_SDK_LINUX_DIR)/tools

步骤12 替换四个so库,需要替换的四个库文件是:libicui18n.so、libicui18n.so.52、libicui18n.so.52.1、libpng12.so.0

1. 从代码仓根目录aosp-on-qemu/oneKey中获取icu-libpng12-build.sh脚本,放在TEMP目录中。

cd /home/$(YOUR_USER)/TEMP./icu-libpng12-build.sh

2. 将TEMP/build-dir/icu/source/lib/目录生成的libicui18n.so、libicui18n.so.52、libicui18n.so.52.1三个库文件拷贝到$(ANDROID_SDK_LINUX_DIR)/tools/lib64/qt/lib/目录下。

cp -r TEMP/build-dir/icu/source/lib/* $(ANDROID_SDK_LINUX_DIR)/tools/lib64/qt/lib/

3. 将TEMP/build-dir/icu/source/libpng-1.2.50/.libs/libpng12.so.0下的一个文件拷贝到$(ANDROID_SDK_LINUX_DIR)/tools/lib64/目录下。

cp -r TEMP/build-dir/icu/source/libpng-1.2.50/.libs/* $(ANDROID_SDK_LINUX_DIR)/tools/lib64/

步骤13 拷贝Android镜像包及jar包。

下载x86上适用的android-sdk-linux.tgz压缩包,并解压到用户目录下(YOUR_USER)。

下载地址:http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz

mkdir -p /home/$(YOUR_USER)/TEMP_DIR

cd TEMP_DIR

wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz

tar -xf android-sdk_r24.4.1-linux.tgz

cp TEMP_DIR/android-sdk-linux/tools/android $(ANDROID_SDK_LINUX_DIR)/tools/

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 1 云手机解决方案 移植指南 (鲲鹏 916)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 8

Page 13: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

cp TEMP_DIR/android-sdk-linux/tools/lib/*.jar $(ANDROID_SDK_LINUX_DIR)/tools/lib/

----结束

1.3.3 构建(android-sdk-linux)platform-tools 目录下部件

步骤1 将代码仓中“/aosp-on-qemu/adb_build”目录复制到自己指定的目录,执行oneKey脚本。

cp -r adb_build $(PATH_TO_AS_YOU_LIKE)

cd $(PATH_TO_AS_YOU_LIKE)

sh oneKey.sh

步骤2 将代码仓中“/aosp-on-qemu/adb_build”目录下adb拷贝到android-sdk-linux/platform-tools/使用

cp adb android-sdk-linux/platform-tools/

----结束

1.4 x86 编译环境准备和组件编译构建

说明

以下操作需要在x86平台服务器上操作。

1.4.1 准备编译环境准备操作系统为Ubuntu16.04.x的x86服务器,用于编译aosp及相关组件。

步骤1 下载Ubuntu 16.04.3操作系统。

下载地址:http://old-releases.ubuntu.com/releases/16.04.3/ubuntu-16.04.3-server-amd64.iso

步骤2 安装编译所需依赖。

apt install openjdk-8-jdk

apt install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib

apt install git flex bison gperf build-essential libncurses5-dev:i386

apt install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386

apt install dpkg-dev libsdl1.2-dev libesd0-dev

apt install git-core gnupg flex bison gperf build-essential

apt install zip curl zlib1g-dev gcc-multilib g++-multilib

apt install libc6-dev-i386

apt install lib32ncurses5-dev x11proto-core-dev libx11-dev

apt install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 1 云手机解决方案 移植指南 (鲲鹏 916)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 9

Page 14: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

apt install lib32z-dev ccache

apt install bc python flex bison gperf libsdl-dev libesd0-dev build-essentialzip curl

----结束

1.4.2 构建(android-sdk-linux)platforms 目录下部件

步骤1 下载Android studio。

从谷歌官方地址http://tools.android-studio.org/ 下载android-studio-ide-183.5522156-linux.tar.gz,解压到用户目录/home/$(YOUR_USER)下。

cd /home/$(YOUR_USER)

tar xvf android-studio-ide-183.5522156-linux.tar.gz

cd $(USER)/android-studio/bin

./studio.sh

步骤2 适配android7.0(android-24)。(使用android7.0请执行此步骤)

1. 启动Android studio,打开“File > Settings”,选择“Appearance & Behavior >System Settings > Android SDK”,选择“SDK Platforms”勾选“Android7.0(Nougat)”并单击“OK”下载。

2. 下载后,在“Appearance & Behavior > System Settings > Android SDK”页中,"Android SDK Location"为指定的目录位置,记为(YOUR_ANDROID_SDK_LOCATION)。文件或文件夹包含共计12个:android-stubs-src.jar、android.jar、build.prop、data、framework.aidl、optional、sdk.properties、skins、source.properties、templates、uiautomator.jar

3. 将YOUR_ANDROID_SDK_LOCATION/platforms/目录下整个android-24目录拷贝到华为鲲鹏916处理器所在编译服务器上android-sdk-linux/platforms/目录下。

步骤3 适配android9.0(android-28)。(使用android9.0请执行此步骤)

1. 启动Android studio,打开“File > Settings”,选择“Appearance & Behavior >System Settings > Android SDK”,选择“SDK Platforms”勾选“Android9.0(Pie)”并单击“OK”下载。

2. 下载后,在“Appearance & Behavior > System Settings > Android SDK”页中,"Android SDK Location"为指定的目录位置,记为(YOUR_ANDROID_SDK_LOCATION)。文件或文件夹包含共计12个:android-stubs-src.jar、android.jar、build.prop、data、framework.aidl、optional、sdk.properties、skins、source.properties、templates、uiautomator.jar

3. 将YOUR_ANDROID_SDK_LOCATION/platforms/目录下整个android-28目录拷贝到华为鲲鹏916处理器所在服务器上android-sdk-linux/platforms/ 目录下。

步骤4 编译Android内核。

1. 下载ndk。下载地址:https://developer.android.google.cn/ndk/downloads/older_releases.html

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 1 云手机解决方案 移植指南 (鲲鹏 916)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 10

Page 15: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

2. 下载android-ndk-r16b-linux-x86_64.zip并解压到 (YOUR_DIR)/android-ndk-r16b。mkdir -p /home/$(YOUR_DIR)/AndroidToolChain/arm64cd /ome/$(YOUR_DIR)/android-ndk-r16b/./build/tools/make_standalone_toolchain.py --arch arm64 --api 24 --install /home/$(YOUR_DIR)/AndroidToolChain/arm64 --forceexport ARM64=$(YOUR_DIR)/AndroidToolChain/arm64/binexport PATH=$ARM64:$PATHexport ARCH=arm64export CROSS_COMPILE=aarch64-linux-android-export LD=aarch64-linux-android-ld

3. 下载Android内核源码。

mkdir -p /home/$(YOUR_KERNEL)cd /home/$(YOUR_KERNEL)git clone https://android.googlesource.com/kernel/goldfishcd goldfishgit checkout android-goldfish-4.4-dev

4. 确保切入分支,后续合入补丁基于此分支:f4355abac45a608dbe0e7d87fd50c349b90d6928git checkout f4355abac45a608dbe0e7d87fd50c349b90d6928

5. 编译kernel。make ranchu64_defconfigmake -j8

6. 拷贝内核二进制文件。

cd arch/arm64/boot文件Image即为所需Android内核,重命名为kernel-ranchu,将其拷贝到鲲鹏916云手机运行环境中。

7. 在鲲鹏916编译环境的android-sdk-linux目录下创建镜像存放的目录。

须知

只有该步骤在华为鲲鹏916处理器所在服务器上操作。

cd $(ANDROID_SDK_LINUX_DIR)mkdir -p system-images/android-24/default/arm64-v8a将kernel-ranchu放到$(ANDROID-SDK-LINUX_DIR)/system-images/android-24/default/arm64-v8a目录下。

----结束

1.4.3 构建(android-sdk-linux)system-images 目录下部件

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 1 云手机解决方案 移植指南 (鲲鹏 916)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 11

Page 16: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

1.4.3.1 构建 aosp-7.0.0_r35 的 system-images 目录

使用android_7.0请参考此小节,使用android_9.0请下一小节。

步骤1 下载aosp源码(android-7.0.0_r35)。

mkdir -p /home/$(AOSP_DIR)

cd /home/$(AOSP_DIR)

repo init -u https://android.googlesource.com/platform/manifest -bandroid-7.0.0_r35

repo sync

//拷贝仓中更目录下 aosp-on-qemu/binaryAndFiles/snapshot_aosp7_B630.xml 快照文件到.repo/manifests/目录下,对aosp7的所有git仓进行代码回退

cp snapshot_aosp7_B630.xml /home/$(AOSP_DIR)/.repo/manifests/

cd /home/$(AOSP_DIR)

repo init -m snapshot_aosp7_B630.xml

repo sync -d -j32

cd /home/$(AOSP_DIR)

source build/envsetup.sh

lunch aosp_arm64-eng

步骤2 合入0001_patchaosp7r35.patch补丁。

代码仓根目录下:aosp-on-qemu/patchForAosp7.0.0r35/0001_patchForAosp7r35.patch

patch -p1 < 0001_patchForAosp7r35.patch

步骤3 编译aosp7.0.0r35镜像。

cd /home/$(AOSP_DIR)

make clean

make -j64

编译成功后,在$(AOSP_DIR)/out/target/product/generic_arm64可以看到如下 新生成的4个如下文件:

cache.img ramdisk.img system.img userdata.img。

步骤4 创建system-images目录并拷贝img文件。

将x86上编译所得的4个img(system.img、userdata.img、ramdisk.img、cache.img)文件拷贝到鲲鹏916编译环境上的$( ANDROID_SDK_LINUX_DIR)/system-images/android-24/default/arm64-v8a/目录下。

代码仓根目录下:aosp-on-qemu/patchForEmuMasterDev/source.properties拷贝到指定目录,$( ANDROID_SDK_LINUX_DIR)/system-images/android-24/default/arm64-v8a/。

----结束

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 1 云手机解决方案 移植指南 (鲲鹏 916)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 12

Page 17: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

1.4.3.2 构建 aosp9.0.0_r10 的 system-images 目录

使用android_9.0请参考此小节,使用android_7.0请参考上一小节。

步骤1 下载aosp源码与编译(android-9.0.0_r10)。

1. 在AOSP9.0SOURCE目录下,下载aosp源码,版本android-9.0.0_r10:

repo init -u https://android.googlesource.com/platform/manifest -bandroid-9.0.0_r10

repo sync

//拷贝仓中更目录下 aosp-on-qemu/binaryAndFiles/snapshot-aosp9_B630.xml 快照文件到.repo/manifests/目录下,对aosp9的所有git仓进行代码回退

cp snapshot-aosp9_B630.xml /home/$(AOSP_DIR)/.repo/manifests/

cd /home/$(AOSP_DIR)

repo init -m snapshot-aosp9_B630.xml

repo sync -d -j32

2. 合入补丁。

代码仓根目录下:aosp-on-qemu/patchForAosp9.0.0r10/0001_ril_network_and_adb_forward.patch

cd AOSP9.0SOURCE

patch -p1 < 0001_ril_network_and_adb_forward.patch

3. 编译aosp。

source build/envsetup.sh

lunch aosp_arm64-eng

make clean

make -j32

步骤2 修改并拷贝镜像文件。

在鲲鹏916的编译环境上的android-sdk-linux目录下创建目录 system-images/android-28/default/arm64-v8a。

将x86上编译所得的6个img(system-qemu.img、userdata.img、ramdisk.img、cache.img、vbmeta.img、vendor-qemu.img)、advancedFeatures.ini拷贝到以上目录。

代码仓根目录下:aosp-on-qemu/patchForEmuMasterDev/source.properties拷贝到指定目录$( ANDROID_SDK_LINUX_DIR)/system-images/android-28/default/arm64-v8a/ 。另外上文中编译出来的android内核文件kernel-ranchu也要拷贝到该目录下面。

source.properties文件还需要修改如下两处内容:

Pkg.Revision=7 ---> Pkg.Revision=9

AndroidVersion.ApiLevel=24 ---> AndroidVersion.ApiLevel=28

修改vendor-qemu.img、system-qemu.img两个文件名称:

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 1 云手机解决方案 移植指南 (鲲鹏 916)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 13

Page 18: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

mv system-qemu.img system.img

mv vendor-qemu.img vendor.img

----结束

1.5 目标 Arm 运行环境准备和运行指导

1.5.1 基于鲲鹏服务器的 Android 模拟器环境搭建指导将鲲鹏916编译环境上的$( ANDROID_SDK_LINUX_DIR)打包发到另外一台华为鲲鹏916处理器所在服务器运行环境上,环境搭建操作请参见《Android模拟器 安装指南(Ubuntu18.04)》。

注意

《Android模拟器 安装指南(Ubuntu18.04)》仅为基于华为鲲鹏处理器的Android模拟器环境搭建的参考指导,文档中所提供的软件均为非商用标准软件,请勿用于商业用途。未经允许直接作为商业用途交付件所引起的责任由您自行承担,如果因此给华为造成损失,华为有权要求您赔偿损失。谢谢!

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 1 云手机解决方案 移植指南 (鲲鹏 916)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 14

Page 19: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

2 云手机解决方案 移植指南 (鲲鹏 920)

2.1 介绍

2.2 环境要求

2.3 鲲鹏920编译环境准备和组件编译构建

2.4 x86编译环境准备和组件编译构建

2.5 目标Arm运行环境准备和运行指导

2.1 介绍

简要介绍

本文档目的是指导如何构建基于鲲鹏计算框架的云手机解决方案,编译环境需要2台服务器,1台鲲鹏920计算平台的编译环境,1台x86平台的编译环境,构建生成 终运行在鲲鹏920平台上的android-sdk-linux软件包。

建议的版本

表 2-1 建议的软件版本

软件 版本

AOSP源码 android-7.0.0_r35或android-9.0.0_r10

由于鲲鹏920不兼容32位指令,所以本文会介绍2种方案来解决32位程序的兼容问题:

1. Android编译构建时合入32位转码软件Exagear,运行32位程序时,会自动将32位指令翻译为64位指令执行。

2. 构建纯64位的Android镜像,适用于纯64位的应用环境。

说明

本文档仅作为云手机解决方案环境编译搭建指导,不对后续容器运行性能提供任何保证。

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 2 云手机解决方案 移植指南 (鲲鹏 920)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 15

Page 20: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

2.2 环境要求

硬件要求

硬件要求如表2-2所示。

表 2-2 硬件要求

项目 说明

服务器1 TaiShan 200服务器

CPU1 华为鲲鹏920处理器

磁盘分区1 对磁盘分区无要求

服务器2 x86平台服务器

CPU2 x86架构处理器

磁盘分区2 对磁盘分区无要求

操作系统要求

操作系统要求如表2-3所示。

表 2-3 操作系统要求

项目 版本

服务器1操作系统 Ubuntu 18.04.1

服务器1上虚拟机操作系统

Ubuntu 16.04.4

服务器2操作系统 Ubuntu 16.04.3

说明

如果是全新安装操作系统,安装方式建议不要使用 小化安装,否则很多软件包需要手动安装,可选择“Server with GUI”安装方式。

2.3 鲲鹏 920 编译环境准备和组件编译构建

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 2 云手机解决方案 移植指南 (鲲鹏 920)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 16

Page 21: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

2.3.1 编译环境准备操作系统Ubuntu18.04.1的鲲鹏920服务器(物理机),在其上安装Ubuntu 16.04.4的虚拟机,Ubuntu16.04.4的虚拟机用于编译emulator及相关依赖组件(虚拟机的内存至少大于16G)。

步骤1 安装服务器1的操作系统。

Ubuntu 18.04.1的iso下载链接:

下载位置:http://old-releases.ubuntu.com/releases/18.04.1/ubuntu-18.04.1-server-arm64.iso

在鲲鹏920(物理机)上安装Ubuntu 18.04.1的安装指导:

参考: https://support.huawei.com/enterprise/zh/doc/EDOC1100052765

步骤2 在服务器1上安装操作系统为Ubuntu16.04.4的虚拟机。

镜像下载地址:http://mirrors.huaweicloud.com/ubuntu-cdimage/ubuntu/releases/16.04/release/ubuntu-16.04.4-server-arm64.iso

虚拟机安装可以参考https://bbs.huaweicloud.com/forum/thread-67347-1-1.html,也可以自行在网上找其他安装资料。

步骤3 安装编译所需依赖。

apt update

apt -y install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

apt -y install libxt-dev libx11-dev libssl-dev libgl1-mesa-dev libpulse-dev

apt -y install libswt-gtk-4-java libswt-gtk-4-jni libswt-cairo-gtk-4-jni libswt-glx-gtk-4-jni libswt-gnome-gtk-4-jni libswt-webkit-gtk-4-jni

apt -y install libtool libgbm-dev gettext-doc libepoxy-dev libfdt-dev libpng++-dev

apt -y install llvm-3.5 clang flex bison scons libedit-dev ant libudev-dev

apt -y install git git-core curl repo openjdk-8-jdk-headless

ln -sf /usr/lib/aarch64-linux-gnu/libedit.so.2 /usr/lib/aarch64-linux-gnu/libedit.so

ln -sf /usr/bin/llvm-config-3.5 /usr/bin/llvm-config

----结束

2.3.2 构建(android-sdk-linux)tools 目录下部件

步骤1 从如下地址获取到代码仓,获取其中的aosp-on-qemu文件夹,上传至鲲鹏920上的“Ubuntu 16.04.4虚拟机”内。

https://code.opensource.huaweicloud.com/Kunpeng/Native/home

步骤2 将代码仓根目录拷贝到android-sdk-linux项目目录构建,该目录用于存放 后编译出来的所有目标二进制文件。

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 2 云手机解决方案 移植指南 (鲲鹏 920)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 17

Page 22: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

cp -r aosp-on-qemu /home/$(YOUR_USER)/

mkdir –p /home/$(YOUR_USER)/android-sdk-linux //创建目标目录,后文记为$(ANDROID_SDK_LINUX_DIR)

cd $(ANDROID_SDK_LINUX_DIR)

mkdir tools //tools中将存放模拟器相关部件

mkdir platforms //platforms中将存放安卓平台API部件

mkdir system-images //system-images中将存放编译出来的安卓系统镜像

mkdir platform-tools //platform-tools中将存放adb二进制可执行文件

步骤3 下载Emulator代码(版本emu-master-dev)。

mkdir –p /home/$(YOUR_USER)$(YOUR_EmuMasterDev_DIR) //Android模拟器源码主目录

cd $(YOUR_EmuMasterDev_DIR)

repo init -u https://android.googlesource.com/platform/manifest-b emu-master-dev

repo sync -j32

//拷贝仓中根目录下 aosp-on-qemu/binaryAndFiles/snapshot_qemu_emu_B630.xml快照文件到.repo/manifests/目录下,对qemu的所有git仓进行代码回退。

cp snapshot_qemu_emu_B630.xml /home/$(YOUR_USER)/$(YOUR_EmuMasterDev_DIR)/.repo/manifests/

cd /home/$(YOUR_USER)/$(YOUR_EmuMasterDev_DIR)

repo init -m snapshot_qemu_emu_B630.xml

repo sync -d -j32

步骤4 回退到指定提交分支。

cd external/qemu

git reset --hard 0e8e684fba9eadcc112067359f9f1027659f3918

git log //该命令可以查看提交记录,确认 后一次提交commit号为0e8e684fba9eadcc112067359f9f1027659f3918

步骤5 构建Emulator依赖库。

1. 删除Prebuilts下x86自带库文件mesa、qt、ANGLE。cd $(YOUR_EMUMASTERDEV_DIR)/prebuilts/android-emulator-buildrm -rf qt mesacd commonrm -rf ANGLE

2. 脚本安装编译所需依赖库。

获取代码仓根目录下的补丁:aosp-on-qemu/patchForEmuMasterDev/0002_prebuilds.patch:cd $(YOUR_EMUMASTERDEV_DIR)/external/qemu/

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 2 云手机解决方案 移植指南 (鲲鹏 920)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 18

Page 23: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

patch -p1 < 0002_prebuilds.patch运行脚本库文件:

cd $(YOUR_EMUMASTERDEV_DIR)/external/qemu/android/scripts/./build-curl.sh./build-qemu-android-deps.sh./build-e2fsprogs.sh./build-ffmpeg.sh./build-lz4.sh./build-libvpx.sh./build-libxml2.sh./build-libusb.shchmod +x build-x264.sh./build-x264.sh./build-virglrenderer.sh

3. 安装库文件(protobuf,breakpad)。a. 安装protobuf:执行安装脚本,代码仓根目录下: aosp-on-qemu/oneKey/build_protobuf.sh./build_protobuf.sh $(YOUR_EMUMASTERDEV_DIR)//注意输入参数$(YOUR_EMUMASTERDEV_DIR)b. 安装breakpad:执行安装脚本,代码仓根目录下: aosp-on-qemu/oneKey/build_breakpad.sh./build_breakpad.sh $(YOUR_EMUMASTERDEV_DIR)//注意输入参数$(YOUR_EMUMASTERDEV_DIR)

4. 下载qt5.6.1源码。

下载地址:http://download.qt.io/new_archive/qt/5.6/5.6.1/single/qt-everywhere-opensource-src-5.6.1.tar.xz

5. 解压qt-everywhere-opensource-src-5.6.1.tar.xz。tar -xvJf qt-everywhere-opensource-src-5.6.1.tar.xz

6. 进入qt-everywhere-opensource-src-5.6.1目录。

cd qt-everywhere-opensource-src-5.6.17. 修改文件qtimageformats/src/3rdparty/libwebp/src/dsp/dsp.h,注释第68行 //

#define WEBP_USE_NEON。//#define WEBP_USE_NEON

8. 执行configure生成Makefile。./configure -v -opensource -confirm-license -force-debug-info -release -no-rpath -shared -nomake examples -nomake tests -no-strip -qt-xcb -c++std c++11 -qt-pcre -no-glib注:在生成Makefile时会报:Makefile:177: recipe for target 'xxx' failed和make:*** [xxx] Error 1为正常现象。

9. 编译并安装。

make -j64make install

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 2 云手机解决方案 移植指南 (鲲鹏 920)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 19

Page 24: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

10. 创建qt依赖库目录。

cd $(YOUR_EMUMASTERDEV_DIR)/prebuilts/android-emulator-buildmkdir -p qt/linux-aarch64/pluginsmkdir -p qt/linux-aarch64/libmkdir -p qt/linux-aarch64/binmkdir -p qt/common/includecd qt/linux-aarch64ln -sf ../common/include include

11. 拷贝QT5.6.1到emulator的prebuilts目录下。

cd $(YOUR_EMUMASTERDEV_DIR)/prebuilts/android-emulator-buildcp -r /usr/local/Qt-5.6.1/lib/* qt/linux-aarch64/lib/cp -r /usr/local/Qt-5.6.1/bin/* qt/linux-aarch64/bin/cp -r /usr/local/Qt-5.6.1/plugins/* qt/linux-aarch64/plugins/cp -r /usr/local/Qt-5.6.1/include/* qt/common/include/

步骤6 源码编译Mesa。

合入补丁,补丁包位于代码仓根目录下:aosp-on-qemu/patchForEmuMasterDev/0003_build_mesa.patch

cd $(YOUR_EMUMASTERDEV_DIR)/external/qemu

patch -p1 < 0003_build_mesa.patch

./android/scripts/build-mesa-deps.sh

./android/scripts/build-mesa.sh

步骤7 源码编译ANGLE。

1. 编译安装ninja工具。

a. 下载ninja源码至/root/目录下,与脚本保持一致。

下载链接:https://github.com/ninja-build/ninja/releases/b. 执行命令解压,安装ninja。

tar -xf ninja-1.7.2.tar.gzcd /root/ninja-1.7.2./configure.py --bootstrapcp -r ninja /usr/bin

2. 运行脚本build-ANGLE.sh执行编译。

cd $(YOUR_EMUMASTERDEV_DIR)/external/qemu/android/scripts/./build-ANGLE.sh执行完成后对angle代码进行回退

cd /tmp/root-build-ANGLE-xxx/build-linux-aarch64/anglegit reset --hard c37c696b94bd7ddecc12a2c3192f5e48eae7842eninja -C out/Debugmkdir /home/anglecp -r /tmp/root-build-ANGLE-xxx/build-linux-aarch64/angle/out/Debug/obj /home/angle

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 2 云手机解决方案 移植指南 (鲲鹏 920)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 20

Page 25: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

cp -r /tmp/root-build-ANGLE-xxx/build-linux-aarch64/angle/out/Debug/lib /home/angle修改ANGLE脚本:build-ANGLE.sh,在脚本run ninja -C out/Debug处后面加一行,此行内容如下

cp -r /home/angle/* $PKG_BUILD_DIR/out/Debug/再执行一遍build-ANGLE.sh./build-ANGLE.sh

步骤8 Emulator代码合入补丁。

1. 在代码仓根目录aosp-on-qemu/patchForEmuMasterDev下找到补丁0001_emuMasterDev_qemu.patch。

2. 补丁拷贝到qemu目录下并合入。

cp 0001_emuMasterDev_qemu.patch $(YOUR_EMUMASTERDEV_DIR)/external/qemucd $(YOUR_EMUMASTERDEV_DIR)/external/qemugit checkout . //合入补丁前保证代码干净

patch -p1 < 0001_emuMasterDev_qemu.patch

步骤9 Emulator编译生成objs,然后将objs目录下的内容拷贝到tools目录下。

1. 设置环境变量(重要步骤)。

export LD_LIBRARY_PATH=$(YOUR_EMUMASTERDEV_DIR)/prebuilts/android-emulator-build/qt/linux-aarch64/lib/

2. 编译。

cd $(YOUR_EMUMASTERDEV_DIR)/external/qemu

注意

若存在objs目录,说明这份代码之前有人编译过,首先删除其他人的编译信息,若不存在,则跳过下面两条命令。

make cleanrm –rf objs– 不带符号表版本编译(易于debug)

./android/configure.shmake-j64

– 带符号表版本编译

./android/configure.sh --symbolsmake-j64

3. 编译成功以后,将objs目录下的内容拷贝到android-sdk-linux目录下的tools目录中。

rm -rf $(YOUR_EMUMASTERDEV_DIR)/external/qemu/objs/buildcp -r $(YOUR_EMUMASTERDEV_DIR)/external/qemu/objs/* $(ANDROID_SDK_LINUX_DIR)/tools/

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 2 云手机解决方案 移植指南 (鲲鹏 920)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 21

Page 26: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

步骤10 编译swt.jar源码,然后将编译后的swt.jar拷贝到tools目录下。

1. 创建临时目录。

mkdir –p /home/$(YOUR_USER)/TEMP2. 在代码仓根目录下/aosp-on-qemu/oneKey中,获取swt-build.sh脚本,并放入

TEMP目录中。

cd TEMP./swt-build.sh //执行脚本构建swt.jar,生成位置TEMP/swt_dir/swt.jar

3. 将swt.jar拷贝至指定目录。

mkdir $(ANDROID_SDK_LINUX_DIR)/tools/lib/aarch64cp swt.jar $(ANDROID_SDK_LINUX_DIR)/tools/lib/aarch64/

步骤11 编译mksdcard源码,然后将生成的mksdcard文件拷贝到tools目录下。

cd $(YOUR_EMUMASTERDEV_DIR)/sdk/emulator/mksdcard/src/source

gcc -o mksdcard mksdcard.c

将生成的mksdcard文件拷贝到android-sdk-linux/tools/目录下:

cp mksdcard $(ANDROID_SDK_LINUX_DIR)/tools

步骤12 替换四个so库,需要替换的四个库文件是:libicui18n.so、libicui18n.so.52、libicui18n.so.52.1、libpng12.so.0

1. 从代码仓根目录aosp-on-qemu/oneKey中获取icu-libpng12-build.sh脚本,放在TEMP目录中。

cd /home/$(YOUR_USER)/TEMP./icu-libpng12-build.sh

2. 将TEMP/build-dir/icu/source/lib/目录生成的libicui18n.so、libicui18n.so.52、libicui18n.so.52.1三个库文件拷贝到$(ANDROID_SDK_LINUX_DIR)/tools/lib64/qt/lib/ 目录下。

cp -r TEMP/build-dir/icu/source/lib/* $(ANDROID_SDK_LINUX_DIR)/tools/lib64/qt/lib/

3. 将TEMP/build-dir/icu/source/libpng-1.2.50/.libs/libpng12.so.0目录中的一个文件拷贝到$(ANDROID_SDK_LINUX_DIR)/tools/lib64/ 目录下。

cp -r TEMP/build-dir/icu/source/libpng-1.2.50/.libs/* $(ANDROID_SDK_LINUX_DIR)/tools/lib64/

步骤13 拷贝Android镜像包及jar包。

下载x86上适用的android-sdk-linux.tgz压缩包,并解压到用户目录下(YOUR_USER)。

下载地址: http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz

mkdir –p /home/$(YOUR_USER)/TEMP_DIR

cd TEMP_DIR

wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz

tar -xf android-sdk_r24.4.1-linux.tgz

cp TEMP_DIR/android-sdk-linux/tools/android $(ANDROID_SDK_LINUX_DIR)/tools/

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 2 云手机解决方案 移植指南 (鲲鹏 920)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 22

Page 27: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

cp TEMP_DIR/android-sdk-linux/tools/lib/*.jar $(ANDROID_SDK_LINUX_DIR)/tools/lib/

----结束

2.3.3 构建(android-sdk-linux)platform-tools 目录下部件

步骤1 将代码仓中“/aosp-on-qemu/adb_build”目录复制到自己指定的目录,执行oneKey脚本。

cp -r adb_build $(PATH_TO_AS_YOU_LIKE)

cd $(PATH_TO_AS_YOU_LIKE)

sh oneKey.sh

步骤2 将代码仓中“/aosp-on-qemu/adb_build”目录下adb拷贝到android-sdk-linux/platform-tools/使用

cp adb android-sdk-linux/platform-tools/

----结束

2.4 x86 编译环境准备和组件编译构建

说明

以下操作需要在x86平台服务器上操作。

2.4.1 准备编译环境准备操作系统为Ubuntu 16.04.x的x86服务器,用于编译aosp及相关组件。

步骤1 下载Ubuntu 16.04.3操作系统。

下载地址:http://old-releases.ubuntu.com/releases/16.04.3/ubuntu-16.04.3-server-amd64.iso

步骤2 安装编译所需依赖。

apt install openjdk-8-jdk

apt install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib

apt install git flex bison gperf build-essential libncurses5-dev:i386

apt install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386

apt install dpkg-dev libsdl1.2-dev libesd0-dev

apt install git-core gnupg flex bison gperf build-essential

apt install zip curl zlib1g-dev gcc-multilib g++-multilib

apt install libc6-dev-i386

apt install lib32ncurses5-dev x11proto-core-dev libx11-dev

apt install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 2 云手机解决方案 移植指南 (鲲鹏 920)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 23

Page 28: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

apt install lib32z-dev ccache

apt install bc python flex bison gperf libsdl-dev libesd0-dev build-essentialzip curl

----结束

2.4.2 构建(android-sdk-linux)platforms 目录下部件

步骤1 下载Android studio。

从谷歌官方地址http://tools.android-studio.org/下载android-studio-ide-183.5522156-linux.tar.gz,解压到用户目录/home/$(YOUR_USER)下。

cd /home/$(YOUR_USER)

tar xvf android-studio-ide-183.5522156-linux.tar.gz

cd $(USER)/android-studio/bin

./studio.sh

步骤2 适配android7.0(android-24)。(使用android7.0请执行此步骤)

1. 启动Android studio,打开“File > Settings”,选择“Appearance & Behavior >System Settings > Android SDK”,选择“SDK Platforms”勾选“Android7.0(Nougat)”并单击“OK”下载。

2. 下载后,在“Appearance & Behavior > System Settings > Android SDK”页中,"Android SDK Location"为指定的目录位置,记为(YOUR_ANDROID_SDK_LOCATION)。文件或文件夹包含共计12个:android-stubs-src.jar、android.jar、build.prop、data、framework.aidl、optional、sdk.properties、skins、source.properties、templates、uiautomator.jar

3. 将YOUR_ANDROID_SDK_LOCATION/platforms/目录下整个android-24目录拷贝到华为鲲鹏920处理器所在编译服务器上android-sdk-linux/platforms/目录下。

步骤3 适配android9.0(android-28)。(使用android9.0请执行此步骤)

1. 启动Android studio,打开“File > Settings”,选择“Appearance & Behavior >System Settings > Android SDK”,选择“SDK Platforms”勾选“Android9.0(Pie)”并单击“OK”下载。

2. 下载后,在“Appearance & Behavior > System Settings > Android SDK”页中,"Android SDK Location"为指定的目录位置,记为(YOUR_ANDROID_SDK_LOCATION)。文件或文件夹包含共计12个:android-stubs-src.jar、android.jar、build.prop、data、framework.aidl、optional、sdk.properties、skins、source.properties、templates、uiautomator.jar

3. 将YOUR_ANDROID_SDK_LOCATION/platforms/目录下整个android-28目录拷贝到华为鲲鹏920处理器所在服务器上android-sdk-linux/platforms/目录下。

步骤4 编译Android内核。

1. 下载ndk。下载地址:https://developer.android.google.cn/ndk/downloads/older_releases.html

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 2 云手机解决方案 移植指南 (鲲鹏 920)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 24

Page 29: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

2. 下载android-ndk-r16b-linux-x86_64.zip并解压到 (YOUR_DIR)/android-ndk-r16b。mkdir -p /home/$(YOUR_DIR)/AndroidToolChain/arm64cd /home/$(YOUR_DIR)/android-ndk-r16b/./build/tools/make_standalone_toolchain.py --arch arm64 --api 24 --install /home/$(YOUR_DIR)/AndroidToolChain/arm64 --forceexport ARM64=$(YOUR_DIR)/AndroidToolChain/arm64/binexport PATH=$ARM64:$PATHexport ARCH=arm64export CROSS_COMPILE=aarch64-linux-android-export LD=aarch64-linux-android-ld

3. 下载Android内核源码。

mkdir –p /home/$(YOUR_KERNEL)cd /home/$(YOUR_KERNEL)git clone https://android.googlesource.com/kernel/goldfishcd goldfishgit checkout android-goldfish-4.4-dev

4. 确保切入分支,后续合入补丁基于此分支:f4355abac45a608dbe0e7d87fd50c349b90d6928git checkout f4355abac45a608dbe0e7d87fd50c349b90d6928

5. 合入32位转码内核部分的补丁。

a. 补丁goldfish-4.4-dev.patch来源

仓中文件位置:aosp-on-qemu/binaryAndFiles/Exagear_version_20191111_AOSP9.0/Exagear_V100R002C00SPC011B001/exagear-a32a64-vm.tar.gzb. 解压

tar zxvf exagear-a32a64-vm.tar.gzc. 解压后将ExaGear ARM32-ARM64 for Android VM/kernel/目录下goldfish-4.4-dev.patch补丁文件拷贝

到/home/$(YOUR_KERNEL)/goldfish/目录下

patch -p1 -m < goldfish-4.4-dev.patch //32 bit 转码补丁合入

6. 编译kernel。make ranchu64_defconfigmake -j8

7. 拷贝内核二进制文件。

cd arch/arm64/boot文件Image即为所需Android内核,重命名为kernel-ranchu,拷贝到鲲鹏920云手机运行环境中。

8. 在鲲鹏920编译环境的android-sdk-linux目录下创建镜像存放目录。

须知

只有该步骤在华为鲲鹏920处理器所在服务器上操作。

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 2 云手机解决方案 移植指南 (鲲鹏 920)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 25

Page 30: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

cd $(ANDROID_SDK_LINUX_DIR)mkdir -p system-images/android-24/default/arm64-v8a将kernel-ranchu放到$(ANDROID-SDK-LINUX_DIR)/system-images/android-24/default/arm64-v8a目录下。

----结束

2.4.3 构建(android-sdk-linux)system-images 目录下部件

2.4.3.1 构建 aosp-7.0.0_r35 的 system-images 目录

使用android_7.0请参考此小节,使用android_9.0请参考下一小节。

步骤1 下载aosp源码(android-7.0.0_r35)。

mkdir -p /home/$(AOSP_DIR)

cd /home/$(AOSP_DIR)

repo init -u https://android.googlesource.com/platform/manifest -bandroid-7.0.0_r35

repo sync

//拷贝仓中更目录下 aosp-on-qemu/binaryAndFiles/snapshot_aosp7_B630.xml 快照文件到.repo/manifests/目录下,对aosp7的所有git仓进行代码回退

cp snapshot_aosp7_B630.xml /home/$(AOSP_DIR)/.repo/manifests/

cd /home/$(AOSP_DIR)

repo init -m snapshot_aosp7_B630.xml

repo sync -d -j32

cd /home/$(AOSP_DIR)

source build/envsetup.sh

lunch aosp_arm64-eng

步骤2 合入0001_patchaosp7r35.patch补丁。

补丁位置:aosp-on-qemu/patchForAosp7.0.0r35/0001_patchaosp7r35.patch

patch -p1 < 0001_patchaosp7r35.patch

步骤3 合入转码补丁

补丁位置:aosp-on-qemu/binaryAndFiles/Exagear_version_20191101_AOSP7.0/Exagear_V100R002C00SPC010B003/exagear-a32a64-vm.tar.gz

tar zxvf exagear-a32a64-vm.tar.gz

解压后将ExaGear ARM32-ARM64 for Android VM/android/android-7.0.0_r35.patch拷贝到$(AOSP_DIR)下

patch -p1 < android-7.0.0_r35.patch

再将ExaGear ARM32-ARM64 for Android VM/android/vendor拷贝到$(AOSP_DIR)下

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 2 云手机解决方案 移植指南 (鲲鹏 920)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 26

Page 31: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

步骤4 编译aosp7.0.0r35镜像。

cd /home/$(AOSP_DIR)

make clean

make -j64

编译成功后,在$(AOSP_DIR)/out/target/product/generic_arm64可以看到如下 新生成的4个如下文件:

cache.img ramdisk.img system.img userdata.img。

步骤5 创建system-images目录并拷贝img文件。

将x86上编译所得的4个img(system.img、userdata.img、ramdisk.img、cache.img)文件拷贝到鲲鹏920编译环境上的$( ANDROID_SDK_LINUX_DIR)/system-images/android-24/default/arm64-v8a/目录下。

再将aosp-on-qemu/patchForEmuMasterDev/source.properties拷贝到$( ANDROID_SDK_LINUX_DIR)/system-images/android-24/default/arm64-v8a/目录下。

----结束

2.4.3.2 构建 aosp9.0.0_r10 的 system-images 目录

使用android_9.0请参考此小节,使用android_7.0请参考上一小节。

步骤1 下载aosp源码与编译(android-9.0.0_r10)。

1. 在AOSP9.0SOURCE目录下,下载aosp源码,版本android-9.0.0_r10repo init -u https://android.googlesource.com/platform/manifest -bandroid-9.0.0_r10repo sync//拷贝仓中更目录下 aosp-on-qemu/binaryAndFiles/snapshot-aosp9_B630.xml快照文件到.repo/manifests/目录下,对aosp9的所有git仓进行代码回退

cp snapshot-aosp9_B630.xml /home/$(AOSP_DIR)/.repo/manifests/cd /home/$(AOSP_DIR)repo init -m snapshot-aosp9_B630.xmlrepo sync -d -j32

2. 合入ril_network_and_adb_forward补丁。

补丁位置:aosp-on-qemu/patchForAosp9.0.0r10/0001_ril_network_and_adb_forward.patchcd AOSP9.0SOURCEpatch -p1 < 0001_ril_network_and_adb_forward.patch

3. 合入转码补丁。

补丁位置:aosp-on-qemu/binaryAndFiles/Exagear_version_20191111_AOSP9.0/Exager_V100R002C00SPC011B001/exagear-a32a64-vm.tar.gz//解压exagear-a32a64-vm.tar.gztar -zxvf exagear-a32a64-vm.tar.gz

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 2 云手机解决方案 移植指南 (鲲鹏 920)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 27

Page 32: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

cp -r ExaGear ARM32-ARM64 for Android VM/android/android-9.0.0_r10.patch AOSP9.0SOURCEcd AOSP9.0SOURCEpatch -p1 < android-9.0.0_r10.patch//在把vendor拷贝到AOSP9.0SOURCE下cp -r ExaGear ARM32-ARM64 for Android VM/android/vendorAOSP9.0SOURCE

4. 编译aosp。source build/envsetup.shlunch aosp_arm64-engmake cleanmake -j32

步骤2 修改并拷贝镜像文件。

在鲲鹏920的编译环境上的android-sdk-linux目录下创建目录 system-images/android-28/default/arm64-v8a。

将x86上编译所得的6个img(system-qemu.img、userdata.img、ramdisk.img、cache.img、vbmeta.img、vendor-qemu.img)、advancedFeatures.ini拷贝到上面新创建的目录。将代码仓中文件aosp-on-qemu/patchForEmuMasterDev/source.properties也拷贝到上面创建的目录。另外上文中编译出来的android内核文件kernel-ranchu也要拷贝到该目录下面。

source.properties文件还需要修改如下两处内容:

Pkg.Revision=7 ---> Pkg.Revision=9

AndroidVersion.ApiLevel=24 ---> AndroidVersion.ApiLevel=28

修改vendor-qemu.img、system-qemu.img两个文件名称:

mv system-qemu.img system.img

mv vendor-qemu.img vendor.img

----结束

2.5 目标 Arm 运行环境准备和运行指导

2.5.1 基于鲲鹏服务器的 Android 模拟器环境搭建指导将鲲鹏920编译环境上的$( ANDROID_SDK_LINUX_DIR)打包发到另外一台华为鲲鹏920处理器所在服务器运行环境上,环境搭建操作请参见《Android模拟器 安装指南(Ubuntu18.04)》。

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 2 云手机解决方案 移植指南 (鲲鹏 920)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 28

Page 33: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

注意

《Android模拟器 安装指南(Ubuntu18.04)》仅为基于华为鲲鹏处理器的Android模拟器环境搭建的参考指导,文档中所提供的软件均为非商用标准软件,请勿用于商业用途。未经允许直接作为商业用途交付件所引起的责任由您自行承担,如果因此给华为造成损失,华为有权要求您赔偿损失。谢谢!

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 2 云手机解决方案 移植指南 (鲲鹏 920)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 29

Page 34: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

3 安卓模拟器 安装指南(Ubuntu18.04)

3.1 介绍

3.2 环境要求

3.3 配置安装环境

3.4 搭建Android SDK

3.5 运行和验证

3.1 介绍安卓模拟器(AVD)可以模拟安卓设备并将其运行服务器。利用AVD,您可以对安卓应用进行原型设计、开发和测试,而无需使用真实的手机。

AVD具备运行安卓应用、adb连接、上网、屏幕、GPS定位、电池、VNC远程连接等基本功能。

3.2 环境要求

硬件要求

硬件要求如表3-1所示。

表 3-1 硬件要求

项目 说明

服务器 TaiShan 100 服务器 (型号2280,华为鲲鹏916处理器)或TaiShan200服务器(型号2280,华为鲲鹏920处理器)

GPU GPU卡

PCIE Riser卡 GPU专用的PCIE Riser卡

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 30

Page 35: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

说明

根据业务类型决定是否需要配置GPU,如果应用没有较强的渲染需求(如后台计算型业务、不涉及UI交互、非游戏类业务等),可不配置GPU,利用CPU进行渲染。

操作系统要求

操作系统要求:Ubuntu18.04.1

说明

如果Ubuntu操作系统没有安装,请下载Ubuntu镜像包。

在安装操作系统过程中“选择软件列表”时,只需选“OpenSSH server”即可,详细信息请参见《TaiShan 服务器 Ubuntu 18.04 安装指南》。

本地工具要求

1. 安装MobaXterm等远程工具,推荐使用MobaXterm。

2. 安装VNC Viewer,工具下载链接:https://www.realvnc.com/en/connect/download/viewer/。

获取软件包

搭建安卓模拟器环境之前,需要下载如表3-2所示的软件包源码和依赖包。

表 3-2 软件包

软件包名称

软件包说明 获取方法

桌面及其他依赖包

运行AVD所需要的xfce4桌面环境、Java运行环境以及numactl工具。

以root身份ssh登录到服务器后,在命令行界面运行:

apt-get install xfce4 numactlopenjdk-8-jdk xrdp

AndroidSDK镜像包

用于搭建Android SDK。 安卓版本为7.0时,Android SDK镜像包获取:

鲲鹏920编译环境:android-sdk-linux_920.tar.gz鲲鹏916编译环境:android-sdk-linux_916.tar.gz鲲鹏920编译环境上的Android 9.0测试SDK镜像包:

android-sdk-9-linux_920

3.3 配置安装环境

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 31

Page 36: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

3.3.1 修改 大打开文件数限制

步骤1 通过SSH方式以root用户远程登录到服务器,进入命令行执行入口。

步骤2 打开 大打开文件数限制文件。

vi /etc/security/limits.conf

步骤3 编辑 大打开文件数限制文件。

加入下面4行内容,如下图所示。

root soft nofile 65535root hard nofile 65535* soft nofile 65535* hard nofile 65535

步骤4 按Esc键,输入:wq!保存退出编辑。

----结束

3.3.2 配置 SSH 服务

步骤1 以root用户通过iBMC KVM工具远程登录到待配置的服务器,进入命令执行入口。

步骤2 修改配置文件“/etc/ssh/sshd_config”,将“#PermitRootLogin prohibit-password”改成“PermitRootLogin yes”。

sed -i "s/#PermitRootLogin prohibit-password / PermitRootLoginyes/g" /etc/ssh/sshd_config

修改后,如下截图的红色框所示。

步骤3 重启SSH服务。

systemctl restart ssh

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 32

Page 37: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

配置SSH服务结束。配置结束后可以用SSH连接此台配置好的服务器了。

----结束

3.3.3 更新 APT

前提条件

确保服务器网络与外网互通。

操作步骤

说明

本操作需要通过MobaXterm等远程工具ssh连接到服务器上进行操作。

步骤1 如果服务器SSH服务已经配置,则请通过SSH方式以root用户远程登录到服务器,进入命令行执行入口。

步骤2 修改文件“/etc/apt/sources.list”,去掉所有# deb-src 行前面的#符号。

执行命令修改:sed -i "s/# deb-src/ deb-src/g" /etc/apt/sources.list

修改后如下:

步骤3 更新APT。

apt-get update

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 33

Page 38: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

等待更新结束。

----结束

3.4 搭建 Android SDK

前提条件

已获取到Android SDK镜像包,并通过MobaXterm工具上传到服务器上的“/home”目录下。获取方法请参见获取软件包。

操作步骤

步骤1 通过SSH方式以root用户远程登录到服务器,进入命令行执行入口。

步骤2 进入Android SDK镜像包所在的“/home”目录。

cd /home

步骤3 解压Android SDK镜像包。

● 鲲鹏920编译环境执行解压命令如下:

tar xvf android-sdk-linux_920.tar.gz● 鲲鹏916编译环境执行解压命令如下:

tar xvf android-sdk-linux_916.tar.gz

步骤4 打开“/etc/profile”配置文件。

vi /etc/profile

步骤5 在配置文件中添加运行安卓所需的环境变量。export ANDROID_SDK_ROOT=/home/android-sdk-linuxexport LD_LIBRARY_PATH=${ANDROID_SDK_ROOT}/tools/lib64/qtexport QT_QPA_PLATFORM_PLUGIN_PATH=${LD_LIBRARY_PATH}/plugins/platformsexport PATH=$PATH:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools

添加完成后如下图所示:

须知

ANDROID_SDK_ROOT环境配置为Android SDK的文件夹路径,需要和实际路径保持一致。

步骤6 按Esc键,输入:wq!保存退出编辑。

步骤7 在“~/.bashrc”文件里添加内容使环境变量生效。

echo "source /etc/profile" >> ~/.bashrc

----结束

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 34

Page 39: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

3.5 运行和验证

3.5.1 运行前准备(GPU 场景)针对配置了GPU的环境,运行安卓模拟器需要依赖GPU驱动环境,请在运行前搭建好GPU驱动环境。

3.5.2 执行命令创建和运行 AVD

3.5.2.1 启动桌面服务

启动远程桌面服务

步骤1 通过SSH方式以root用户远程登录到服务器,进入命令行执行入口。

步骤2 启动桌面。

● 配置了GPU的环境:执行startx命令,启动桌面。

预期的执行结果如下图:

● 没有配置GPU的环境(即采用CPU渲染):执行startx -- :0 -config /etc/X11/xrdp/xorg.conf ,启动桌面。

预期的执行结果如下图:

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 35

Page 40: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

步骤3 新开一个命令行窗口以root用户通过SSH登录到服务器。

步骤4 启动x11vnc服务。

依次执行:

export DISPLAY=:0

x11vnc

运行后的预期结果可以看到vnc端口号5900:

说明

指定DISPLAY环境变量为您启动的Xorg的端口号,一般第一次启动为0,可以执行ps -ef | grepXorg命令查看:

----结束

在本地远程连接桌面

步骤1 在本地打开VNC Viewer。

步骤2 输入服务器IP地址和端口号,按Enter连接。

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 36

Page 41: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

进入服务器远程桌面。

----结束

3.5.2.2 创建 AVD创建AVD的方式有两种,在桌面环境中创建AVD和以Shell命令行方式创建AVD,选择其中一种方式创建AVD即可。

在桌面环境下创建 AVD

步骤1 在VNC远程桌面环境中点击鼠标右键后选择“Open Terminal Here”,打开终端模拟工具。

步骤2 执行android avd命令,打开AVD Manager。

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 37

Page 42: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

步骤3 创建AVD。

根据自己需求选择设备类型(分辨率)、版本、架构、皮肤、内存大小、sdcard大小,单击“OK”,AVD即创建成功。

----结束

Shell 命令行方式创建 AVD

步骤1 通过SSH方式以root用户远程登录到服务器,进入命令行执行入口。

步骤2 创建AVD,命令参考如下。

android create avd --name test_2 --target android-24 --abi arm64-v8a --device"Nexus 4" --skin 720x1280 --sdcard 500M --force

步骤3 查看已创建的AVD。

android list avd

可以查看到已经创建成功的AVD,如下图所示。

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 38

Page 43: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

----结束

3.5.2.3 启动 AVD启动AVD的模式也是有两种,在桌面环境下启动AVD和Shell命令行方式启动AVD,选择其中一种方式启动AVD即可。

在桌面环境下启动 AVD

步骤1 在x11vnc桌面环境中,右键打开终端,选择“Open Terminal Here”。

步骤2 在打开的terminal中输入AVD启动命令,命令行如下。

● 配置了GPU,请执行:

emulator -avd test_1 -no-window -cores 2 -writable-system -gpu host -qemu --enable-kvm -m 1024 -vnc :1

● 未配置GPU,请执行:

emulator -avd test_1 -no-window -cores 2 -writable-system -gpu mesa -qemu --enable-kvm -m 1024 -vnc :1

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 39

Page 44: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

表 3-3 emulator 命令的参数说明

参数名称 参数说明

-avd avd的名字。

-no-window 不在桌面环境启动模拟器画面。

-cores 启动的模拟器的CPU个数。

-writable-system

文件系统变成可写模式。

-gpu host 启用硬件GPU进行渲染。

-gpu mesa 使用CPU软渲染。

-qemu 传递参数给qemu。

--enable-kvm 使能kvm。

-m 内存大小。

-vnc 使用vnc来连接模拟器。

其他参数请参考命令 emulator –help。

步骤3 在本地打开VNC Viewer,输入业务口IP:5901,如下图所示。

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 40

Page 45: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

步骤4 单击“Continue”,出现如下界面,表示avd启动成功。

----结束

Shell 命令行方式启动 AVD

步骤1 通过SSH方式以root用户远程登录到服务器,进入命令行执行入口。

步骤2 设置DISPLAY环境变量。

export DISPLAY=:0

说明

指定DISPLAY环境变量为您启动的Xorg的端口号,一般第一次启动为0,可以执行ps -ef | grepXorg查看:

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 41

Page 46: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

步骤3 启动AVD。● 配置了GPU,请执行:

emulator -avd test_2 -no-window -cores 2 -writable-system -gpu host -qemu --enable-kvm -m 1024 -vnc :2

● 未配置GPU,请执行:

emulator -avd test_2 -no-window -cores 2 -writable-system -gpu mesa -qemu --enable-kvm -m 1024 -vnc :2

步骤4 在本地打开VNC Viewer,输入业务口IP:5902,如下图所示。

步骤5 单击“Continue”,出现如下界面,表示avd启动成功。

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 42

Page 47: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

----结束

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 43

Page 48: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

须知

为大幅提升AVD性能,需要在启动参数前加numactl参数进行绑核,将CPU和内存绑在同一个内存节点上可以明显提升AVD性能,提高操作流畅度,如:

numactl -N 0 -m 0 emulator -avd test_2 -no-window -cores 2 -writable-system -gpu host -qemu --enable-kvm -m 1024 -vnc :2

如果要将AVD限定在某几个核上,则可以这样启动:

numactl -C 0-7 -m 0 emulator -avd test_2 -no-window -cores 2 -writable-system -gpu host -qemu --enable-kvm -m 1024 -vnc :2

numactl参数解释:

-N:bind cpu node

-m:bind memory node

-C:bind cpu core

可以通过numactl --show查看当前系统的numa情况:

可以看到总共有4个numa node(节点),共64个core,每个cpu node有16个core。

● numactl -N 0 -m 0意味着程序将绑在cpu node 0 和mem node 0上。

● numactl -C 0-7 -m 0意味着程序绑定在core0~core7上,内存绑在mem node0上 ,那么程序 多只能用到8核。

3.5.3 通过运行脚本批量创建和运行 AVD

3.5.3.1 AVD 操作脚本介绍

我们提供了如下一个脚本avd.sh(下载avd.zip,解压后即可得到avd.sh),该脚本集成了启动桌面服务、创建AVD、启动AVD、停止AVD等功能,具有Xorg自动启动功能(脚本中会检测硬件环境是否配置了GPU,并选择相应的Xorg启动方式),AVD模板的创建、启动、停止功能,通过对AVD模板的复制,可实现批量创建多个AVD,并实现了一次启动或停止多AVD,加入了绑核等优化手段,提高准确率及工作效率。推荐使用者能够熟悉掌握该脚本中的实现细节,对脚本中的启动参数等自行调节。

avd.sh脚本中涉及的环境变量如表3-4所示。

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 44

Page 49: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

表 3-4 avd.sh 脚本中的环境变量

参数名称 参数说明

WORK_PATH 工作目录,默认为/root,您可以改为/home等工作目录。

ANDROID_SDK_HOME

SDK所在目录,与ANDROID_SDK_ROOT相同。

ANDROID_AVD_HOME

AVD目录。

ANDROID_SYS_DIR

镜像目录。

PATH 路径。

ANDROID_ADB_PATH

adb目录。

注意

在使用本脚本以前,请确保已经按照3.2 环境要求~3.4 搭建Android SDK做好了环境配置,如果配置了GPU,还需要把GPU用到的“xorg.conf”文件放到“/root/”目录下,下面依次介绍AVD模板的创建、启动、停止;多AVD的创建、启动、停止。

3.5.3.2 操作 AVD 模板

步骤1 创建AVD模板。

说明

重新执行指令./avd.sh –createt创建AVD模板,会自动覆盖原先创建的AVD模板。

1. 创建AVD模板。

./avd.sh -createt2. 查看AVD是否创建成功。

./avd.sh -list

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 45

Page 50: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

步骤2 启动AVD模板。

1. 启动AVD模板。

./avd.sh -startt2. 根据脚本运行结果查看是否启动成功。

步骤3 VNC连接AVD模板。

打开VNC Viewer,输入IP:6901,打开AVD(由上图可知vnc编号为1001,这是一个偏移量, 终的端口号6901=5900+1001)。

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 46

Page 51: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

步骤4 关闭AVD模板。

1. 关闭AVD模板。

./avd.sh -stopt2. 查看AVD是否成功关闭。

ps -ef | grep qemu

----结束

3.5.3.3 操作多 AVD

前提条件

确保AVD模板已成功启动过。

操作步骤

步骤1 创建多AVD。

1. 基于已创建的AVD模板进行复制,例如基于模板复制16个新的AVD,使用如下指令(其中0~15表示AVD号)。

./avd.sh -create 0-15

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 47

Page 52: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

说明

AVD号也可以指定其他的,例如:

./avd.sh -create 11-14

./avd.sh -create 19

2. 查看AVD是否创建成功。

./avd.sh -list或者使用指令:

./avd.sh -list | grep Name

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 48

Page 53: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

说明

重新执行指令./avd.sh -a 0-15,会自动删除原先创建的AVD,并重新复制创建AVD。

步骤2 启动多AVD。

1. 使用如下指令(其中2~6表示AVD号)启动AVD。./avd.sh -start 2-6(可以再带一个-novnc参数则不启动avd的vnc ,avd直接显示在xfce4桌面上)

2. 查看AVD是否成功启动。

ps -ef | grep qemu

步骤3 关闭多AVD。

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 49

Page 54: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

1. 使用如下指令(其中2~6表示AVD号)关闭AVD。./avd.sh -stop 2-6

2. 查看AVD是否成功关闭。

ps -ef | grep qemu

----结束

3.5.3.4 修改 AVD 分辨率

步骤1 打开AVD分辨率配置文件“out.config”,文件路径在安卓镜像目录下面。

vi /root/android-sdk-linux/system-images/android-24/default/arm64-v8a/out.config

步骤2 修改分辨率。

通过修改whx以及dpi的值修改AVD的分辨率。

● 例如需要改成720P的,则可改为:wxh = 720 x 1280, dpi = 320● 例如需要改成1080P的,则可改为:wxh = 1080 x 1920 , dpi = 320

说明

如果对分辨率没有特别的要求,推荐使用小一点的分辨率,降低资源消耗。

步骤3 按Esc键,输入:wq!保存退出。

步骤4 修改完后需要重新创建AVD才生效。

----结束

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 50

Page 55: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

3.5.3.5 删除 AVD原则上AVD无需手动删除,新建的AVD会自动覆盖原先创建的AVD。ANDROID_AVD_HOME为创建的AVD的保存路径,通过删除该目录下的AVD即可实现AVD的删除。也可手动修改AVD的创建目录为指定的其他目录。

鲲鹏云手机解决方案安装指南(Andriod 模拟器) 3 安卓模拟器 安装指南(Ubuntu18.04)

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 51

Page 56: 安装指南(Andriod 模拟器)apt install build-essential autoconf xfce4 xubuntu-desktop xrdp openjdk-8-jre ccache

A 修订记录

发布日期 修订记录

2020-08-20 第七次正式发布

将安卓模拟器 安装指南(Ubuntu18.04)中“Android模拟器”修改为“安卓模拟器”。

2020-08-10 第六次正式发布

更新云手机解决方案 移植指南(鲲鹏916)和云手机解决方案移植指南(鲲鹏920)。

2020-07-29 第五次正式发布

删除GPU驱动环境搭建 移植指南(鲲鹏916)和GPU驱动环境搭建 移植指南(鲲鹏920)。

2020-06-23 第四次正式发布

安卓模拟器 安装指南(Ubuntu18.04)修改内容如下:

3.2 环境要求中更新Android SDK镜像包获取路径。

2020-05-31 第三次正式发布

GPU驱动环境搭建 移植指南(鲲鹏920)中修改环境要求。

2020-05-13 第二次正式发布

● Android模拟器 安装指南(Ubuntu18.04)修改内容如下:

– 3.2 环境要求中补充Android SDK镜像包获取路径。

– 3.5.3.1 AVD操作脚本介绍中将avd.zip附件包修改为下载链接方式。

● GPU驱动环境搭建 移植指南(鲲鹏920)中优化GPU驱动基础软件架构图。

2020-03-20 第一次正式发布

鲲鹏云手机解决方案安装指南(Andriod 模拟器) A 修订记录

文档版本 07 (2020-08-20) 版权所有 © 华为技术有限公司 52