基于鲲鹏芯片的Android模拟器环境搭建指导书
安卓模拟器(AVD)可以模拟安卓设备并将其运行服务器。利用AVD,您可以对Android应用进行原型设计、开发和测试,而无需使用真实的手机。
AVD具备运行安卓应用、adb连接、上网、屏幕、GPS定位、电池、VNC远程连接等基本功能。
项目 | 说明 |
---|---|
CPU | 华为鲲鹏 920 处理器 |
GPU | AMD显卡 |
OS | 优麒麟 Ubuntu Kylin 20.04 LTS |
搭建Android模拟器环境之前,需要下载软件包源码和依赖包。
运行 AVD 所需要的 Java 运行环境以及 numactl 工具
sudo apt install numactl openjdk-8-jdk libncurses5 libswt*
鲲鹏 920 编译环境下的 Android 安卓模拟器 SDK 镜像包
7.0 获取:android-sdk-linux_920.tar.gz
9.0 测试:android-sdk-9-linux_920
9.0 的镜像,使用adb安装app都正常,但是,安装好的app即使给了读写存储的权限,也不能读写存储。我也没搞懂自己哪里设置的不对。汗!
备用地址:https://pan.baidu.com/s/10OhtfNexb9pPEJAknJ00yg 提取码: 4jrs
tar xvf android-sdk-linux_920.tar.gz
sudo nano /etc/profile
export ANDROID_SDK_ROOT=/home/android-sdk-linux
export LD_LIBRARY_PATH=${ANDROID_SDK_ROOT}/tools/lib64/qt
export QT_QPA_PLATFORM_PLUGIN_PATH=${LD_LIBRARY_PATH}/plugins/platforms
export PATH=$PATH:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools
须知:“ANDROID_SDK_ROOT”环境配置为Android%20SDK的文件夹路径,“/home/android-sdk-linux”需要和实际路径保持一致。
在桌面环境下创建AVD
步骤 1 打开终端。步骤 2 打开AVD Manager
执行命令 android avd步骤 3 创建AVD。
根据自己需求选择设备类型(分辨率),版本,架构,皮肤,内存大小,sdcard大小(不建议使用SD卡),
点击ok,AVD即创建成功。
在桌面环境下启动AVD
打开终端,输入AVD启动命令,命令行如下。
参数 | 说明 |
---|---|
-avd | avd的名字 |
-no-window | 不在桌面环境启动模拟器画面。 |
-cores | 启动的模拟器的CPU个数。 |
-writable-system | 文件系统变成可写模式。 |
-gpu host | 启用硬件GPU进行渲染。 |
-qemu | 传递参数给qemu。 |
--enable-kvm | 使能kvm。 |
-m | 内存大小。 |
-vnc | 使用vnc来连接模拟器。 |
其他参数请参考命令 emulator –help。
emulator -avd test_1 -cores 4 -writable-system -gpu host
单击“保存并连接”,出现如下界面,表示avd启动成功。
为大幅提升AVD性能,需要在启动参数前加numactl参数进行绑核,将CPU和内存限定在某几个核上绑在同一个内存节点上可以明显提升AVD性能,提高操作流畅度,如:
numactl -C 0-3 -m 0 emulator -avd test_2 -cores 4 -gpu host
如果要将AVD同CPU和内存绑定在同一个内存节点上,则可以这样启动:
numactl -N 0 -m 0 emulator -avd test_2 -cores 4 -gpu host
numactl参数解释:
-N:bind cpu node
-m:bind memory node
-C:bind cpu core
可以通过 numactl --show 查看当前系统的numa情况:
可以看到总共有0个numa node(节点),共8个core,每个cpu node有8个core。
numactl -C 0-3 -m 0 emulator -avd test_2 -cores 4 -writable-system -gpu host
在终端中使用adb命令,先安装一个app商店。比如,应用汇、安卓市场……
adb install app.apk
然后,在安卓系统中用商店就可以安装其他app了。
我们提供了如下一个脚本avd.sh(下载avd.zip,%20解压后即可得到avd.sh),该脚本集成了启动桌面服务、创建AVD、启动AVD、停止AVD等功能,具有Xorg自动启动功能(脚本中会检测硬件环境是否配置了GPU,并选择相应的Xorg启动方式),AVD模板的创建、启动、停止功能,通过对AVD模板的复制,可实现批量创建多个AVD,并实现了一次启动或停止多AVD,加入了绑核等优化手段,提高准确率及工作效率。推荐使用者能够熟悉掌握该脚本中的实现细节,对脚本中的启动参数等自行调节。
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目录。
步骤 1 AVD模板的创建。
使用如下指令:
./avd.sh -createt
使用如下指令检查是否成功创建avd模板:
./avd.sh -list
步骤 2 AVD模板的启动,使用如下指令。
./avd.sh -startt
根据脚本运行结果看是否启动成功
步骤 3 VNC连接AVD模板。
打开VNC Viewer,输入IP:6901,打开AVD(由上图可知vnc编号为1001,这是一个偏移量,最终的端口号6901=5900+1001):
步骤 4 AVD模板的关闭。
使用如下指令:
./avd.sh -stopt
使用如下指令检查是否成功关闭avd:
ps -ef | grep qemu
重新执行指令./avd.sh –createt创建AVD模板,会自动覆盖原先创建的AVD模板。
前提条件
确保AVD模板已成功启动过。
操作步骤
在复制的AVD中同样会存在,可避免重复安装。
步骤 1 多AVD的创建。
该指令是基于已创建的AVD模板进行复制,比如,基于模板复制16个新的AVD,使用如下指令(其中0-15表示AVD号):
. /avd .sh -create 0-15
AVD号也可以指定其他的比如:
. /avd .sh -create 11-14
. /avd .sh -create 19
使用如下指令检查是否成功创建avd:
. /avd .sh -list
或者使用指令:
. /avd .sh -list | grep Name
重新执行指令./avd.sh -a 0-15,会自动删除原先创建的AVD,并重新复制创建AVD。
步骤 2 多AVD的启动。
使用如下指令(其中2-6表示AVD号):
. /avd .sh -start 2-6
(可以再带一个-novnc参数则不起avd的vnc ,avd直接显示在xfce4桌面上)
使用如下指令检查是否成功启动avd:
ps -ef | grep qemu
步骤 3 多AVD的关闭。
使用如下指令(其中2-6表示AVD号):
. /avd .sh -stop 2-6
使用如下指令检查是否成功关闭avd:
ps -ef | grep qemu
步骤 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
比如需要改成720P的,则可改为:wxh = 1080 x 1920 , dpi = 320
步骤 3 退出编辑。
按Esc键,输入:wq保存退出编辑
步骤 4 修改完后需要重新创建AVD才生效。
如果对分辨率没有特别的要求,推荐使用小一点的分辨率,降低资源消耗。
原则上AVD无需手动删除,新建的AVD会自动覆盖原先创建的AVD。ANDROID_AVD_HOME为创建的AVD的保存路径,通过删除该目录下的AVD即可实现AVD的删除。也可手动修改AVD的创建目录为指定的其他目录。
avd.zip6.75 KB
《云手机解决方案 移植指南(鲲鹏920)》,https://support.huaweicloud.com/dpmg-kunpengcps/kunpengcps_03_0002.html
《Android模拟器 安装指南(Ubuntu18.04)》,https://support.huaweicloud.com/dpmg-kunpengcps/kunpengcps_03_0003.html
《GPU驱动环境搭建 移植指南(鲲鹏920)》,https://support.huaweicloud.com/dpmg-kunpengcps/kunpengcps_03_0005.html
《robox安卓容器 移植指南(鲲鹏920)》,https://support.huaweicloud.com/prtg-robox-kunpengcps/kunpengcps_02_0002.html