掌桥专利:专业的专利平台
掌桥专利
首页

一种在ARM架构上实现安卓容器运算的系统及方法

文献发布时间:2023-06-19 11:35:49


一种在ARM架构上实现安卓容器运算的系统及方法

技术领域

本发明涉及Android系统技术领域,具体涉及一种在ARM架构上实现安卓容器运算系统及方法。

背景技术

在x86 CPU领域,云桌面采用虚拟化的技术,可以将一台物理服务器同时共享给多个用户使用,从而形成了目前规模庞大的公有云、私有云行业。而在手机领域,也存在类似的需求,随着智能手机的快速发展,其硬件性能不断提升,在一台手机硬件上运行多套Android系统,类似于云桌面,组成云手机系统并提供服务,在云游戏、云广告、个人专用云手机领域都有着非常广泛的应用前景。

目前实现Android系统虚拟化的方式有多种,如很早之前就有的在x86机器上运行的模拟器方式、谷歌专为开发人员调试Android程序而开发的Android Emulator,但这两种方式都不同程度上存在一些问题或限制,如模拟器方式主要是运行在x86架构上的,存在CPU指令翻译的性能损失,及各种App(应用程序)运行兼容性问题;Android Emulator也是运行在x86架构之上,虽然兼容性问题得到解决,但性能损失较大,如果移植到ARM架构上,因ARM CPU本身性能相比x86 CPU偏弱,运行虚拟机时会带来更多的性能损耗,用户体验不好。汇总起来,以上现有方案都会存在如下几个问题:

(1)、x86架构上运行虚拟化因cpu指令转换带来较大性能损失;

(2)、X86架构上运行原生android app而产生的兼容性问题;

(3)、在ARM架构上运行Android Emulator带来更多的性能损失,对ARM CPU本身产生很大影响。

因此,在ARM架构下需要一种更有效的虚拟化方案,在解决兼容性问题的同时,减少现有虚拟化方案带来的总体性能损失。

发明内容

本发明正是针对上述问题,本发明提供一种在ARM架构上实现安卓容器运算系统及方法。

为实现上述目的,首先本发明提供一种在ARM架构上实现Android容器运算系统,包括:

容器,采用Docker方案,在其中运行Android Framework和各个App;

Android容器管理器,用以实现对Docker中运行的Android虚拟机的管理,并提供模拟GPU、模拟底层硬件设备的支持;

高速传输通道,高速命令及数据通道,为在Docker内运行的Android虚拟机与Android容器管理器之间提供高速的传输通道;

虚拟Display模块,用以虚拟显示设备,实现Android虚拟机桌面的显示、用户操作输入等功能;

桌面推流服务器,将Android虚拟机的桌面画面传输出来,用户使用对应的客户端进行观看;

较佳地,该系统还包括桌面推流客户端,用以连接桌面推流服务器,查看Android系统的桌面,并提供操作输入。

本发明还提供一种在ARM架构上实现安卓容器运算的方法,包括如下步骤:

Android容器的自启动;

图形渲染及显示;

及用户操作输入。

采用发明提供的方法,可实现一种新的Android系统虚拟化的方案,此方案运行时占用资源少,在同等硬件条件下可虚拟化多套Android系统,显著降低使用成本。同时,因其在ARM CPU上运行,省去CPU指令翻译的性能损失,并且完全兼容各种App应用,可大规模应用到云手机、云广告和云游戏场景中,为企业带来更大的成本节省和利益收益。

附图说明

图1是本发明系统的框架图;

图2是本发明中Androd容器启动流程图;

图3是本发明中Android容器的3D图形渲染及输入输出系统。

具体实施方式

为了便于本领域的普通技术人员能够理解并实施本发明,下面将结合附图对本发明实施例作进一步说明。

参考图1,本发明提供一种在ARM架构上实现安卓容器运算系统,采用目前成熟的容器方案来搭建Android虚拟化系统,整体架构由如下几个部分组成:

(1)、容器:采用Docker方案,在其中运行Android Framework和各个App;

(2)、Android容器管理器:实现对Docker中运行的Android虚拟机的管理,并提供模拟GPU、模拟底层硬件设备的支持;

(3)、高速传输通道:高速命令及数据通道,为在Docker内运行的虚拟机与Android容器管理器之间提供高速的传输通道;

(4)、虚拟Display模块:虚拟显示设备,实现虚拟机桌面的显示、用户操作输入等功能;

(5)、桌面推流服务器:将虚拟机的桌面画面传输出来,用户使用对应的客户端进行观看;

(6)、桌面推流客户端:连接桌面推流服务器,查看Android系统的桌面,并提供操作输入。

参照图1-3,本发明还提供一种在ARM架构上实现安卓容器运算的方法,基于上述系统,包括步骤:

Android容器的自启动;

图形渲染及显示;

及用户操作输入。

其中,较佳地,所述Android容器的自启动实现方式如下:

(1)、用户在命令行输入Android容器启动命令,首先程序会检查参数及环境变量;

(2)、加载高速传输通道模块,此模块为Android容器与容器管理器提供高速命令和数据传输,如模拟GPU渲染命令和数据。此部分需要内核共享内存模块的配合;

(3)、启动虚拟Display模块,后续此Android系统的界面显示数据将传输到这个模块,由此模块负责进行显示合成和分发;

(4)、启动安卓容器管理器模块,安卓容器管理器主要负责和容器内的Android系统进行通讯,并提供系统底层硬件和环境变量的模拟功能,如模拟GPU、模拟传感器、模拟GPS模块等,拉通Android虚拟机和本地系统,为Android虚拟机提供底层适配支持;

(5)、启动Docker容器,加载Android系统及内部的App。Docker容器提供了整个Android Framework和App的运行环境,后续系统和App的运行都将在此容器内部进行;

(6)、启动桌面推流服务,桌面推流服务将Android系统的桌面画面推流出去,并接收客户端传递过来的输入指令,然后再通过Android容器管理器传输给容器内部的Android系统;

(7)、用户启动桌面推流客户端进行观看和操作,客户端与桌面推流服务端连接,接收服务端发送出来的桌面画面并展示给用户,同时将用户的输入操作如点击、划动等传输给推流服务端。

容器内的Android系统起来之后,用户就可以在桌面推流客户端看到系统画面,并进行各种输入操作,其整体架构如图3,其中,较佳地,所述图形渲染及显示实现方式如下:

(1)、App由Android Framework启动之后,首先会进行初始化,然后向Framework申请自己的显示窗口资源;

(2)、Framework会为此App分配窗口资源,并向Android容器管理器申请显存资源,后续此窗口的显示内容都将存放到此部分显存中;

(3)、App申请到窗口之后,就会向窗口绘制各种画面,这时,如果App调用了3D渲染相关的指令,则会由Framework将渲染指令和数据,通过高速通道传递给Android容器管理器;

(4)、Android容器管理器收到3D渲染相关指令后,进行分析处理,最终调用本机GPU提供的API接口进行渲染;

(5)、在本机GPU进行渲染后,Android容器管理器会渲染结果存放到App申请的显存资源中;

(6)、此时,虚拟Dispaly会监视到这部分显存的内容发生变化,显示的内容有更新,则会记录到虚拟Display中,并通知桌面推流服务;

(7)、随后,桌面推流服务则访问显存,将更显后的画面数据推送给桌面服务客户端,这时,用户就可以在客户端上看到Android系统的画面变化了。

其中,较佳地,所述用户操作输入的实现方式如下:

(1)、用户在桌面推流客户端观看Android桌面画面时,会进行各种操作,如点击、滑动等,操作首先会被桌面推流客户端捕捉到;

(2)、桌面客户端再将用户指令进行编码,传输给桌面推流服务端;

(3)、桌面推流服务端通过虚拟Dispaly将指令再传输给Android容器管理器;

(4)、Android容器管理器解码接收到的指令,并通过高速通道将指令传递给Android Framwork;

(5)、Android Framwork通过正常的流程进行指令处理,并最终传递给App进行处理,App针对指令做出画面刷新的操作,最终用户可在桌面推流客户端看到对应的画面变化。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

相关技术
  • 一种在ARM架构上实现安卓容器运算的系统及方法
  • 基于安卓双容器系统的设备策略管理系统及管理域实现方法
技术分类

06120112986634