[发明专利]在x86架构上运行ARMAPK的模拟器装置和方法有效
申请号: | 201410104264.1 | 申请日: | 2014-03-20 |
公开(公告)号: | CN103885814B | 公开(公告)日: | 2017-05-17 |
发明(设计)人: | 孙元臻;温健;曹博;刘超;唐宇 | 申请(专利权)人: | 百度在线网络技术(北京)有限公司 |
主分类号: | G06F9/455 | 分类号: | G06F9/455 |
代理公司: | 北京铭硕知识产权代理有限公司11286 | 代理人: | 曾世骁 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | x86 架构 运行 arm apk 模拟器 装置 方法 | ||
技术领域
本发明涉及模拟器技术领域,更具体地,涉及一种在x86架构上运行包含ARM动态链接库的APK的Android模拟器装置和方法。
背景技术
目前,Android操作系统被广泛应用于移动计算领域。在Android操作系统的应用程序开发中,通常会使用Android模拟器。Android模拟器能够模拟除了接听和拨打电话外的所有移动设备上的典型功能和行为。Android模拟器提供了大量的导航和控制键,从而使用户可以通过鼠标或键盘点击这些按键来为应用程序产生事件。同时,Android模拟器还可显示Android自带应用程序和用户的应用程序。为了便于模拟和测试应用程序,Android模拟器允许用户的应用程序通过Android平台服务调用其他程序、访问网络、播放音频和视频、保存和传输数据、通知用户、渲染图像过渡和场景。Android模拟器同样具有强大的调试能力,例如能够记录内核输出的控制台、模拟程序中断(比如接收短信或打入电话)、模拟数据通道中的延时效果和遗失。因此,Android模拟器的使用对于Android应用程序的开发具有重要的意义。
Android模拟器分为ARM架构和x86架构两种。其中,x86架构下的Android模拟器的性能是ARM架构下的Android模拟器(以下简称“ARM模拟器”)的10倍以上。但是,x86架构下的Android模拟器无法运行包含ARM动态链接库的APK(以下简称为“ARM APK”),原因是x86架构的CPU指令集与ARM架构的CPU指令集不兼容。
因此,需要一种在x86架构的模拟器上运行包含ARM动态链接库的APK的Android模拟器装置和方法。
发明内容
本发明的一方面提供一种在x86架构上运行包含ARM动态链接库的APK的Android模拟器装置,包括:APK安装模块,解析安装的APK并对包含ARM的动态链接库的APK进行标记;APK运行模块,根据APK安装模块所做的标记使被启动的APK运行在对应的虚拟机上,其中,虚拟机包括基于x86架构的虚拟机和基于ARM架构的虚拟机;CPU指令翻译模块,将运行在基于ARM架构的虚拟机上的APK的CPU指令翻译成x86指令。
根据本发明的一方面,APK安装模块通过判断在APK的lib目录下是否包含“arm”目录来确定APK是否包含ARM动态链接库。
根据本发明的一方面,APK安装模块在确定安装的APK包含ARM动态链接库的情况下,在该APK的目录下新建用于指示ARM动态链接库的存在的文件。
根据本发明的一方面,Android模拟器装置还包括:虚拟机模块,根据APK运行模块发出的通知消息来初始化对应的虚拟机,并使用对应的虚拟机来运行被启动的APK,其中,基于x86架构的虚拟机和基于ARM架构的虚拟机被实现为Android Dalvik虚拟机的Zygote进程。
根据本发明的一方面,基于ARM架构的虚拟机运行在CPU指令翻译模块启动的进程之上。
根据本发明的另一方面,一种在x86架构的Android模拟器上运行包含ARM动态链接库的APK的方法包括:解析安装的APK并对包含ARM的动态链接库的APK进行标记;根据APK安装模块所做的标记使被启动的APK运行在对应的虚拟机上其中,虚拟机包括基于x86架构的虚拟机和基于ARM架构的虚拟机;将运行在基于ARM架构的虚拟机上的APK的CPU指令翻译成x86指令。
根据本发明的另一方面,对包含ARM的动态链接库的APK进行标记包括:通过判断在APK的lib目录下是否包含“arm”目录来确定APK是否包含ARM动态链接库。
根据本发明的另一方面,对包含ARM的动态链接库的APK进行标记包括:如果确定安装的APK包含ARM动态链接库,则在该APK的目录下新建用于指示ARM动态链接库的存在的文件。
根据本发明的另一方面,根据APK安装模块所做的标记使被启动的APK运行在对应的虚拟机上包括:发出通知消息以通知Android模拟器使用不同的虚拟机来运行被启动的APK,其中,基于x86的虚拟机和基于ARM的虚拟机分别实现为Android Dalvik虚拟机的Zygote进程。
根据本发明的另一方面,基于ARM架构的虚拟机运行在CPU指令翻译模块启动的进程之上。
附图说明
通过下面结合附图进行的描述,本发明的上述和其他目的和特点将会变得更加清楚,其中:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于百度在线网络技术(北京)有限公司,未经百度在线网络技术(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410104264.1/2.html,转载请声明来源钻瓜专利网。