您当前的位置:首页 > 计算机 > 系统应用 > Linux

优麒麟中搭建安卓环境(鲲鹏 920)

时间:11-21来源:作者:点击数:

基于鲲鹏芯片的Android模拟器环境搭建指导书

【注意事项】:该文档仅为基于鲲鹏芯片的Android模拟器环境搭建的参考指导,文档中所提供的软件均为非商用标准软件,请勿用于商业用途。未经允许直接作为商业用途交付件所引起的责任由您自行承担,如果因此给华为造成损失,华为有权要求您赔偿损失。谢谢!

1 简介

安卓模拟器(AVD)可以模拟安卓设备并将其运行服务器。利用AVD,您可以对Android应用进行原型设计、开发和测试,而无需使用真实的手机。
AVD具备运行安卓应用、adb连接、上网、屏幕、GPS定位、电池、VNC远程连接等基本功能。

2 环境

项目 说明
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

3 操作步骤

  1. 进入Android SDK镜像包所在的“/home”目录。
    cd /home
  2. 解压Android SDK镜像包。
    • 鲲鹏920编译环境执行解压命令如下:

      tar xvf android-sdk-linux_920.tar.gz

  3. 打开“/etc/profile”配置文件。

    sudo nano /etc/profile

  4. 在配置文件中添加运行Android所需的环境变量。
    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”需要和实际路径保持一致。

  5. 按ctrl + o 组合键,回车,保存文件。ctrl + x 退出编辑。
  6. 使环境变量生效。 source /etc/profile
    或者在“~/.bashrc”文件里添加内容
    echo "source%20/etc/profile" >> ~/.bashrc

4 运行模拟器

4.1 手动操作AVD

4.1.2 创建AVD

创建avd的方式有两种,在桌面环境中创建AVD和以Shell命令行方式创建AVD,这里选择第一种方法。

在桌面环境下创建AVD

步骤 1    打开终端。

步骤 2    打开AVD Manager

执行命令 android avd

步骤 3     创建AVD。

根据自己需求选择设备类型(分辨率),版本,架构,皮肤,内存大小,sdcard大小(不建议使用SD卡),

点击ok,AVD即创建成功。

4.1.3 启动AVD

在桌面环境下启动AVD

打开终端,输入AVD启动命令,命令行如下。

emulator命令的参数说明
参数 说明
-avd avd的名字
-no-window 不在桌面环境启动模拟器画面。
-cores 启动的模拟器的CPU个数。
-writable-system 文件系统变成可写模式。
-gpu host 启用硬件GPU进行渲染。
-qemu 传递参数给qemu。
--enable-kvm 使能kvm。
-m 内存大小。
-vnc 使用vnc来连接模拟器。

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

  • 配置了GPU,请执行:

    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情况:

  •  lio@arm:~$ numactl --show
  •  policy: default
  •  preferred node: current
  •  physcpubind: 0 1 2 3 4 5 6 7 
  •  cpubind: 0 
  •  nodebind: 0 
  •  membind: 0 

可以看到总共有0个numa node(节点),共8个core,每个cpu node有8个core。

  • numactl -N 0 -m 0意味着程序将绑在cpu node 0 和mem node 0上。
  • numactl -C 0-7 -m 0意味着程序绑定在core0~core7上,内存绑在mem node0上,那么程序最多只能用到8核。
    经过测试,绑定 4 个 CPU 内核与 8 个的区别不大。

numactl -C 0-3 -m 0 emulator -avd test_2 -cores 4 -writable-system -gpu host

4.1.4 安装APP

在终端中使用adb命令,先安装一个app商店。比如,应用汇、安卓市场……

adb install app.apk

然后,在安卓系统中用商店就可以安装其他app了。

4.2 自动操作AVD

在使用本脚本以前,请确保已经按照第1、2、3章做好了环境配置,并把GPU用到的xorg.conf文件放到/root/目录下,下面依次介绍AVD模板的创建、启动、停止;多AVD的创建、启动、停止。

4.2.1 AVD操作脚本介绍

我们提供了如下一个脚本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目录。

4.2.2 操作AVD模板

步骤 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

00.png


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


4.2.3 操作多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

4.2.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

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

步骤 3     退出编辑。

按Esc键,输入:wq保存退出编辑

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


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


4.2.5 删除AVD

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

 

A 附录

A.1 缩略语

image.png

 

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

 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门