Android模拟器及实现Android模拟器的方法与流程

文档序号:12271017阅读:844来源:国知局
Android模拟器及实现Android模拟器的方法与流程

本发明涉及计算机技术领域,具体而言,本发明涉及一种Android模拟器,及一种实现Android模拟器的方法。



背景技术:

随着计算机技术的不断发展,人们的生活越来越依赖于各种应用程序,人们对应用程序的使用需求也越来越多样化,用户在Android操作系统的移动终端上使用的游戏类应用程序时,用户希望在Windows操作系统的PC(Personal Computer,个人电脑)端也能实现对该应用程序的操作体验,使得用户能够在更大的显示屏中感受更加便捷、流畅的操作体验,从而解决由于移动终端屏幕较小而带来的视觉体验度不高的问题;同时,可以避免移动终端的处理器的因发热等原因导致的游戏卡死的情况,以及避免移动终端网络信号不稳定导致用户在操作游戏的过程中发生中断等情况。

现有技术中,首先需要在Windows操作系统的PC端安装虚拟机,通过在该虚拟机中运行虚拟的Android操作系统,随后在该虚拟的Android操作系统中安装并运行Android应用程序。一方面,在安装虚拟机的过程中,必须安装该虚拟机的全套内核级的驱动程序,在应用程序的运行过程中调用各内核驱动的过程极为复杂,且耗费系统资源;另一方面,虚拟机的运行过程本身需要耗费PC端的大量硬盘空间和内存,PC端大量的系统资源被占用,将导致降低PC端各进程运行的响应速度;再一方面,现有技术的实现极大地依赖于对PC端的CPU(Central Processing Unit,中央处理器)的虚拟化硬件加速技术,在过去的几十年里,即使硬件虚拟化技术快速的普及,使得计算机的性能越来越好,但是为了避免各种存在的安全隐患发生,超过70%的主板在制造完成时,在BIOS(Basic Input Output System,基本输入输出系统)上禁止了硬件虚拟化技术的实现,因此导致大量用户的需求无法被满足,降低了用户体验;进一步地,虚拟机本质上是涉及给具备专业知识的商业用户和极客用户使用,将给普通用户在使用过程中带来极大的操作困难,从而限制了用户群体的拓展。



技术实现要素:

为克服上述技术问题或者至少部分地解决上述技术问题,特提出以下技术方案:

本发明的实施例提出了一种Android模拟器,包括Android虚拟机及应用程序运行模块:

Android虚拟机,包括数据转换单元和运行单元,

数据转换单元用于将基于Linux系统的Android相关数据的数据结构转换为基于Windows系统的Windows相关数据的数据结构;

运行单元在Windows系统中建立并管理Linux系统的线程、信号、并在Windows系统中管理Linux系统的内存分配;

应用程序运行模块,用于在Android虚拟机运行模块中运行应用程序。

优选地,Android虚拟机用于通过加载预定格式的Linux可执行文件来加载Android系统和应用程序的动态链接库相关文件。

优选地,运行单元包括信号处理单元,信号处理单元用于

基于预设配置参数来判断是否对Android模拟器中当前运行线程及相关函数进行信号处理;

若是,在当前运行线程及相关函数中添加Linux的相应信号以及信号处理函数;

通过数据转换模块中的预定接口,根据当前运行线程的相应Linux信号调用其信号处理函数;

其中,当前运行线程包括Android虚拟机和应用程序在运行过程中生成的线程,相关函数包括且不限于符合可移植操作系统接口POSIX标准的相关函数。

优选地,运行单元包括内存管理单元,内存管理单元用于

基于Windows系统的虚拟内存的管理方式,实现Linux系统的内存管理接口;

基于Windows的相关接口和预定的内存分配算法,通过内存管理接口在Windows系统中管理Linux系统的内存分配。

优选地,运行单元包括多媒体处理单元,多媒体处理单元用于

基于Windows系统的DirectX和DirectSound接口,实现Android系统所用的OpenGL ES图像处理接口以及OpenSL ES音频处理接口;

通过调用Windows系统的多媒体编程接口DirectX的相关接口对图像帧和音频进行控制。

优选地,运行单元包括文件输入输出IO管理单元,IO管理单元用于

根据待处理数据的数据结构来判断数据处理过程中是否需要进行数据结构的转换;

若是,则将Linux系统中的待处理数据的数据结构转换为Windows系统中相应的数据结构。

其中,数据处理过程包括:判断数据类型,并对数据类型为文件的相关数据执行相应处理以及对数据类型为Socket的相关数据执行相应处理。

可选地,IO管理单元还用于

通过预定检测方法判断在Linux系统中IO复用过程中是否发生预定的事件;

若是,则在Linux系统中IO复用过程中添加与预定的事件相关联的Linux线程信号。

优选地,运行单元包括虚拟文件系统单元,虚拟文件系统单元用于通过虚拟文件系统单元将Windows系统中的文件地址转换为Linux系统对应的文件地址;

其中,文件地址包括文件的相对路径和绝对路径。

可选地,Android模拟器还包括ARM解释器,ARM解释器用于

解释ARM指令,使其能够在X86平台上运行。

本发明的另一实施例提出了一种实现Android模拟器的方法,包括:

将基于Linux系统的Android相关数据的数据结构转换为基于Windows系统的Windows相关数据的数据结构;

在Windows系统中建立并处理Linux系统的相应信号、并在Windows系统中管理Linux系统的内存分配,以在Windows系统中运行Android虚拟机;

在Android虚拟机中运行应用程序。

可选地,在Windows系统中运行Android虚拟机之后,还包括:

通过加载预定格式的Linux可执行文件来加载Android系统和应用程序的动态链接库相关文件。

优选地,在Windows系统中建立并处理Linux系统的相应信号,包括:

基于预设配置参数来判断是否对Android模拟器中当前运行线程及相关函数进行信号处理;

若是,在当前运行线程及相关函数中添加Linux的相应信号以及信号处理函数;

通过数据转换模块中的预定接口,根据当前运行线程的相应Linux信号调用其信号处理函数;

其中,当前运行线程包括Android虚拟机和应用程序在运行过程中生成的线程,相关函数包括且不限于符合可移植操作系统接口POSIX标准的相关函数。

优选地,在Windows系统中管理Linux系统的内存分配,包括:

基于Windows系统的虚拟内存的管理方式,实现Linux系统内存管理接口;

基于Windows的相关接口和预定的内存分配算法,通过内存管理接口在Windows系统中管理Linux系统的内存分配。

优选地,在Windows系统中建立并处理Linux系统的相应信号,包括:

基于Windows系统的DirectX和DirectSound接口,实现Android系统所用的OpenGL ES图像处理接口以及OpenSL ES音频处理接口;

通过调用Windows系统的DirectX的相关接口对图像帧和音频进行控制。

优选地,在Windows系统中建立并处理Linux系统的相应信号,包括:

根据待处理数据的数据结构来判断数据处理过程中是否需要进行数据结构的转换;

若是,则将Linux系统中的待处理数据的数据结构转换为Windows系统中相应的数据结构。

其中,数据处理过程包括:判断数据类型,并对数据类型为文件的相关数据执行相应处理以及对数据类型为Socket的相关数据执行相应处理。

可选地,还包括:

通过预定检测方法判断在Linux系统中IO复用过程中是否发生预定的事件;

若是,则在Linux系统中IO复用过程中添加与预定的事件相关联的Linux线程信号。

优选地,在Windows系统中建立并处理Linux系统的相应信号,包括:

通过虚拟文件系统单元将Windows系统中的文件地址转换为Linux系统对应的文件地址;

其中,文件地址包括文件的相对路径和绝对路径。

可选地,该方法还包括:

将Linux系统的机器语言指令转换为Windows系统的相应指令。

本发明的实施例中,提出了一种Android模拟器,包括Android虚拟机及应用程序运行模块:Android虚拟机,包括数据转换单元和运行单元,数据转换单元用于将基于Linux系统的Android相关数据的数据结构转换为基于Windows系统的Windows相关数据的数据结构,以实现数据在Android操作系统及Windows操作系统之间的正常便捷通信,避免了通过复杂的转换方式而导致数据出错的情况,为应用程序的正常运行提供了重要的前提保障;运行单元在Windows系统中建立并管理Linux系统的线程、信号、并在Windows系统中管理Linux系统的内存分配,彻底实现了Android应用程序在Windows系统中以原生应用程序的形式的正常运行,且实现了Android应用程序在运行过程中占用较少的系统资源,解决了Android应用程序在Windows系统中运行卡、慢等问题;应用程序运行模块,用于在Android虚拟机运行模块中运行应用程序,无需用户的复杂操作方式即可实现Android应用程序在Windows系统中的正常、快速运行,进一步地,提高了用户的使用体验。

本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明中一个实施例的Android模拟器的结构示意图;

图2为本发明中另一实施例的实现Android模拟器的方法的流程图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。

图1为本发明中一个实施例的Android模拟器的结构示意图。

本发明的实施例中,各模块所执行的内容概述如下:Android虚拟机110及应用程序运行模块120:Android虚拟机110包括数据转换单元111和运行单元112,数据转换单元111将基于Linux系统的Android相关数据的数据结构转换为基于Windows系统的Windows相关数据的数据结构;运行单元112在Windows系统中建立并处理Linux系统的相应信号、并在Windows系统中管理Linux系统的内存分配;应用程序运行模块120在Android虚拟机运行模块中运行应用程序。

本发明的实施例中,提出了一种Android模拟器,包括Android虚拟机及应用程序运行模块:Android虚拟机,包括数据转换单元和运行单元,数据转换单元用于将基于Linux系统的Android相关数据的数据结构转换为基于Windows系统的Windows相关数据的数据结构,以实现数据在Android操作系统及Windows操作系统之间的正常便捷通信,避免了通过复杂的转换方式而导致数据出错的情况,为应用程序的正常运行提供了重要的前提保障;运行单元在Windows系统中建立并管理Linux系统的线程、信号、并在Windows系统中管理Linux系统的内存分配,彻底实现了Android应用程序在Windows系统中以原生应用程序的形式正常运行,且实现了Android应用程序在运行过程中占用较少的系统资源,解决了Android应用程序在Windows系统中运行卡、慢等问题;应用程序运行模块,用于在Android虚拟机运行模块中运行应用程序,无需用户的复杂操作方式即可实现Android应用程序在Windows系统中的正常、快速运行,进一步地,提高了用户的使用体验。以下针对各个模块的具体实现做进一步的说明:

Android虚拟机110包括数据转换单元111和运行单元112。

数据转换单元111将基于Linux系统的Android相关数据的数据结构转换为基于Windows系统的Windows相关数据的数据结构。

需要说明的是,本领域技术人员可以了解到,Microsoft开发的运行时库C Runtime Library是在windows平台下用于操作系统的开发和运行,一般来说,CRT函数(C Runtime函数)就是标准的C语言函数,之后在此基础上开发了C++Runtime Library,所以现有技术中的CRT是指Microsoft开发的C/C++Runtime Library。例如,printf、scanf、strlen、fopen等函数就属于CRT函数。在Windows下所有的CRT函数最终都是转化成为win32API来执行的。Windows本身并没有在内核之上提供对CRT的支持。CRT既可以通过静态连接来实现,也可以通过动态链接来实现。

Android是基于Linux内核的操作系统,因此Android操作系统中的操作将涉及到Linux的相关操作,如Android操作系统中数据结构为Linux的数据结构,Android操作系统中的信号管理机制为Linux中的信号管理机制等;同时,由于Android是基于Linux内核的操作系统,其底层CRT接口的实现方式参考Linux、OpenBSD系统的实现方式,且其底层CRT接口大部分符合POSIX/Linux/OpenBSD标准,另有一些底层CRT接口是自定义方式实现的,并不与上述标准相符。我们可以将这些CRT接口统称为符合“Android系统标准”的接口。

例如,本实施例中在Windows操作系统上运行Android模拟器,由于Android模拟器是基于Linux操作系统开发的,因此需要在Windows操作系统上对CRT实现符合POSIX和OpenBSD等的标准,又由于Linux操作系统数据结构不同于Windows操作系统的数据结构,因此还需要将基于Linux操作系统的Android相关数据的数据结构转换为基于Windows操作系统的Windows相关数据的数据结构,如,在通过加载预定格式的Linux可执行文件,如ELF格式的相关文件,以加载的so库和自定义的CRT函数表中,通过函数名查找相应函数的地址,如果是so库里的函数则直接调用,如果是自定义的CRT函数,则调用该自定义函数;通过函数名查找相应函数的地址的实现方法包括:将Android数据结构转成兼容Windows标准的中间数据结构,调用Windows接口实现函数功能,随后将返回值转成Android数据结构,最终以实现Android模拟器通过CRT的相关接口与Windows操作系统进行数据通信,以实现Android虚拟机,如谷歌Google实现的为Android系统所用的Java虚拟机Dalvik,在Windows操作系统上的正常运行。

本实施例中,Android虚拟机以沙箱的运行环境在Windows操作系统上运行,需要说明的是,本领域技术人员可以了解到,Android虚拟机在Windows操作系统上运行有不同的实现方式,本发明虽然会以特定的方式实现,但并不对此进行限制。

优选地,Android虚拟机110加载预定格式的Linux可执行文件,并加载Android系统和应用程序的动态链接库相关文件。

例如,Android操作系统的应用层是用Java语言编写的,因此Android虚拟机运行的过程中,将加载Java的相关文件,在Android虚拟机中运行应用程序APP1时,Android虚拟机运行之后首先加载Android虚拟机的相关必备库,如Android虚拟机的自定义的CRT相关库,包括已实现libc.so的接口、OpenGL ES接口、OpenSL ES接口以及一部分Android NDK(Native Development Kit,原生开发工具包)接口等,随后Android虚拟机通过加载预定格式的Linux可执行文件,如ELF格式的相关文件,以加载Android系统和APP1的动态链接库相关文件,如Android系统的系统库的相关.so文件、APP1的相关.so文件和数学库libm.so的相关文件等。

运行单元112在Windows系统中建立并处理Linux系统的相应信号、并在Windows系统中管理Linux系统的内存分配。

优选地,运行单元包括信号处理单元,信号处理单元基于预设配置参数来判断是否对Android模拟器中当前运行线程及相关函数进行信号处理;

若是,在当前运行线程及相关函数中添加Linux的相应信号以及信号处理函数;

通过数据转换模块中的预定接口,根据当前运行线程的相应Linux信号调用其信号处理函数;

其中,当前运行线程包括Android虚拟机和应用程序在运行过程中生成的线程,相关函数包括且不限于符合可移植操作系统接口POSIX标准的相关函数。

需要说明的是,在计算机科学中,信号是Unix、类Unix以及其他POSIX兼容的操作系统中进程间通讯的一种有限制的方式,是一种异步的通知机制,用来提醒进程一个事件已经发生。当一个信号发送给一个进程,操作系统中断了进程正常的控制流程,此时,任何非原子操作都将被中断。如果进程定义了信号的处理函数,那么它将被执行,否则就执行默认的处理函数。

在Linux操作系统中,发出信号的原因有很多,如当进程退出,或者子进程终止时,可发出与进程终止相关的信号;在执行一个并不存在的系统调用时,可发出与执行系统调用时遇到非预测错误条件相关的信号;在用户态下的进程之间可以互相通过系统调用Kill函数发送软中断signal信号来通知进程发生了异步事件等。例如,Android虚拟机Dalvik中已连接了跨平台的开放线程库,如PD632,用户在Android虚拟机Dalvik中运行的应用程序APP1中,预设置了线程thread1运行的过程中调用signal信号,随后在APP1中注册了signal信号相关处理函数,Linux操作系统中每个信号都有一个编号和一个宏定义名称,当APP1通过Dalvik在Windows操作系统中运行时,生成了线程thread1,随后CRT的相关接口根据接收到thread1的signal信号,可根据signal信号编号和名称,判断得到需要对Dalvik中当前运行线程thread1进行信号处理,随后在Windows操作系统中当前运行线程thread1添加signal信号相关处理函数,随后通过CRT的相关接口调用PD632线程库,并根据signal信号相关处理函数以完成执行thread1。

又例如,用户在Android虚拟机Dalvik中运行的应用程序APP1中,预设置了线程thread1运行的过程中调用signal信号,随后CRT的相关接口根据接收到thread1的signal信号,可根据signal信号编号和名称,判断得到需要对Dalvik中当前运行线程thread1进行信号处理,随后在Windows操作系统中调用Windows操作系统底层的相关函数,如暂停当前运行线程thread1,并在thread1中添加signal信号相关处理函数,随后再恢复thread1的运行,通过CRT的相关接口调用PD632线程库,并根据signal信号相关处理函数以完成执行thread1。

优选地,运行单元112包括内存管理单元(图中未示出),内存管理单元基于Windows系统的虚拟内存的管理方式,实现Linux系统的内存管理接口;

基于Windows的相关接口和预定的内存分配算法,通过内存管理接口在Windows系统中管理Linux系统的内存分配。

Linux操作系统中的虚拟内存管理机制与Windows操作系统中的虚拟内存管理机制不同,如,Linux操作系统中有mmap系列接口,而Windows操作系统中的虚拟内存管理VirtualAlloc系列接口、文件内存映射MapViewOfFile系列接口。例如,基于Windows系统的虚拟内存的管理方式,在Dalvik中生成对应的内存管理接口interface1,随后,基于Windows的相关接口,如VirtualAlloc,和预定的内存分配算法,在APP1的运行过程中,通过内存管理接口interface1在Windows系统中实现APP1在Dalvik的内存分配机制。

优选地,运行单元112包括实现单元(图中未示出)和多媒体处理单元(图中未示出),实现单元基于Windows系统的DirectX和DirectSound接口,实现Android系统所用的OpenGL ES图像处理接口以及OpenSL ES音频处理接口;多媒体处理单元通过调用Windows系统的多媒体编程接口DirectX的相关接口对图像帧和音频进行控制。

在Android中处理图像时,通过使用OpenGL ES(OpenGL for Embedded Systems)这套标准对硬件加速,例如,在App1的运行过程中,涉及对图像的处理时,在Dalvik中通过OpenGL ES接口对图像进行处理;ANGLE(Almost Native Graphics Layer Engine,浏览器上的WebGL环境)是Google Chromium开源项目下的一个子项目,是基于Windows/Mac/Linux各自底层图形接口实现的跨平台OpenGL ES库,,在CRT的处理过程中,Windows操作系统可通过ANGLE调用Windows的DirectX的相关接口,如DirectX9和DirectX11的接口,来实现OpenGL ES的相关接口,以对图像进行相应处理,并在CRT的处理DirectX的相关接口的过程中,添加自定义的图像帧的控制方法,使得App1以每秒中至少填充300帧以上数量的图像来运行,并添加了自定义文字处理的方法,使得App1在运行过程中可显示用户的实时弹幕消息,同时,添加了自定义应用程序界面的视频对接方法,使得App1在运行过程中能够快速便捷的对接外部视频。

优选地,运行单元112包括文件输入输出IO管理单元(图中未示出),IO管理单元根据待处理数据的数据结构来判断数据处理过程中是否需要进行数据结构的转换;

若是,则将Linux系统中的待处理数据的数据结构转换为Windows系统中相应的数据结构。

其中,数据处理过程包括:判断数据类型,并对数据类型为文件的相关数据执行相应处理以及对数据类型为Socket的相关数据执行相应处理。

例如,Linux操作系统中对IO的管理方式不同于Windows操作系统中对IO的管理方式,Linux操作系统中将文件、USB等都以设备来处理,但是,Linux操作系统中的处理设备都是以文件的操作方式实现,因此,在CRT的处理过程中,需要自定义Linux操作系统中的文件的数据结构,能够在Windows操作系统实现Linux操作系统中的文件如打开、读、写的操作,且需要自定义Linux操作系统中Socket以及IO中的相关设备文件等的相关数据结构,能够在Windows操作系统实现与Linux操作系统中的Socket通信方式。如在App1运行的过程中,涉及到对文件file1的打开操作,根据待处理文件file1的数据结构为文件数据结构,可判断file1处理过程中需要进行数据结构的转换,随后判断file1的数据类型为文件,将Linux系统中的待处理file1的数据结构转换为Windows系统中相应的文件数据结构。

可选地,IO管理单元还通过预定检测方法判断在Linux系统中IO复用过程中是否发生预定的事件;

若是,则在Linux系统中IO复用过程中添加与预定的事件相关联的Linux线程信号。

例如,在IO复用过程中,涉及到Linux的信号机制,如,poll为Linux中的字符设备驱动中的函数,epoll为Linux内核为处理大批量文件描述符而作了改进的poll,在poll和epoll的处理过程中,通过预定的检测方法,如自定义的test_event函数去检查poll和epoll所关心的文件句柄上是否发生关心的事件,一旦发生所关心的事件,则通知相关联的线程,触发进一步的信号处理。

优选地,运行单元112包括虚拟文件系统单元,虚拟文件系统单元通过虚拟文件系统单元将Windows系统中的文件地址转换为Linux系统对应的文件地址。

其中,文件地址包括文件的相对路径和绝对路径。

在Android中,文件系统目录如system、data,应用程序的存放目录一般存放在data\app目录下或data\data目录下,而在Windows不存在相应的目录,如data\app目录或data\data目录,Windows中一般以C:\,或D:\等形式的目录存放文件,在Windows操作系统中,需要实现Android应用程序来访问的与Android中data地址对应的目录,因此,通过预定的虚拟文件系统的管理方法,如通过映射表来对文件路径的映射的对应管理来实现Android应用程序在Windows操作系统中访问的与Android中data地址对应的Windows目录。例如,在Windows中运行App1的过程中,App1需要读取文件file2,通过调用CRT打开文件操作的接口,调用自定义虚拟文件系统的相关接口,将file2在Windows中的路径地址转换为Android中的相应路径地址,并通过将相对路径转换成绝对路径的预定函数,如realpath函数,得到file2在Windows中的绝对路径地址,以保证App1在Windows中成功读取到文件file2。

可选地,Android模拟器还包括ARM解释器,ARM解释器负责解释ARM机器语言指令,使其可以在X86平台上执行,其实现方法包括但不限于使用Windows底层API实现指令功能,通过重建中间数据结构以执行相应的X86指令或数条X86指令来实现ARM指令功能。

例如,在Android中,将Linux系统的机器语言指令转换为Windows系统的x86处理器的相应指令,使得Android应用程序可在x86处理器的Windows操作系统中正常运行。

图2为本发明中另一实施例的实现Android模拟器的方法的流程图。

本发明的实施例中,各步骤所执行的内容概述如下:步骤S210:将基于Linux系统的Android相关数据的数据结构转换为基于Windows系统的Windows相关数据的数据结构;步骤S220:在Windows系统中建立并处理Linux系统的相应信号、并在Windows系统中管理Linux系统的内存分配,以在Windows系统中运行Android虚拟机;步骤S230:在Android虚拟机中运行应用程序。

可选地,在Windows系统中运行Android虚拟机之后,还包括步骤S240(图中未示出);步骤S240:通过加载预定格式的Linux可执行文件来加载Android系统和应用程序的动态链接库相关文件。

优选地,步骤S220中在Windows系统中建立并处理Linux系统的相应信号的步骤,具体包括步骤S221(图中未示出)、步骤S222(图中未示出)和步骤S223(图中未示出);步骤S221:基于预设配置参数来判断是否对Android模拟器中当前运行线程及相关函数进行信号处理;步骤S222:若是,在当前运行线程及相关函数中添加Linux的相应信号以及信号处理函数;步骤S223:通过数据转换模块中的预定接口,根据当前运行线程的相应Linux信号调用其信号处理函数。

其中,当前运行线程包括Android虚拟机和应用程序在运行过程中生成的线程,相关函数包括且不限于符合可移植操作系统接口POSIX标准的相关函数。

优选地,步骤S220中在Windows系统中管理Linux系统的内存分配的步骤,具体包括步骤S224(图中未示出)和步骤S225(图中未示出);步骤S224:基于Windows系统的虚拟内存的管理方式,实现Linux系统的内存管理接口;步骤S225:基于Windows的相关接口和预定的内存分配算法,通过内存管理接口在Windows系统中管理Linux系统的内存分配。

优选地,步骤S220中在Windows系统中建立并处理Linux系统的相应信号的步骤,具体包括步骤S226(图中未示出)和步骤S227(图中未示出);步骤S226:基于Windows系统的DirectX和DirectSound接口,实现Android系统所用的OpenGL ES图像处理接口以及OpenSL ES音频处理接口;步骤S227:通过调用Windows系统的DirectX的相关接口对图像帧和音频进行控制。

优选地,步骤S220中在Windows系统中建立并处理Linux系统的相应信号的步骤,具体包括步骤S228(图中未示出)和步骤S229(图中未示出);步骤S228:根据待处理数据的数据结构来判断数据处理过程中是否需要进行数据结构的转换;步骤S229:若是,则将Linux系统中的待处理数据的数据结构转换为Windows系统中相应的数据结构。

其中,数据处理过程包括:判断数据类型,并对数据类型为文件的相关数据执行相应处理以及对数据类型为Socket的相关数据执行相应处理。

可选地,该方法还包括步骤S250(图中未示出)和步骤S260(图中未示出);步骤S250:通过预定检测方法判断在Linux系统中IO复用过程中是否发生预定的事件;步骤S260:若是,则在Linux系统中IO复用过程中添加与预定的事件相关联的Linux线程信号。

优选地,步骤S220中在Windows系统中建立并处理Linux系统的相应信号的步骤,具体包括步骤S2210(图中未示出);步骤S2210:通过虚拟文件系统单元将Windows系统中的文件地址转换为Linux系统对应的文件地址;

其中,文件地址包括文件的相对路径和绝对路径。

可选地,该方法还包括步骤S270(图中未示出);步骤S270:将Linux系统的机器语言指令转换为Windows系统的相应指令。

本发明的方案中,实施例中提供的实现Android模拟器的方法中各步骤的具体功能实现,可以参照图1实施例中Android模拟器的各功能模块的具体实现原理,在此不再详述。

本技术领域技术人员可以理解,本发明包括涉及用于执行本申请中所述操作中的一项或多项的设备。这些设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备。这些设备具有存储在其内的计算机程序,这些计算机程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中,所述计算机可读介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随即存储器)、EPROM(Erasable Programmable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。

本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。

本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1