CN113821333A - 安卓应用程序迁移的方法和装置 - Google Patents

安卓应用程序迁移的方法和装置 Download PDF

Info

Publication number
CN113821333A
CN113821333A CN202010569613.2A CN202010569613A CN113821333A CN 113821333 A CN113821333 A CN 113821333A CN 202010569613 A CN202010569613 A CN 202010569613A CN 113821333 A CN113821333 A CN 113821333A
Authority
CN
China
Prior art keywords
android application
resource information
application program
binder
ashmem
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010569613.2A
Other languages
English (en)
Inventor
王创
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010569613.2A priority Critical patent/CN113821333A/zh
Priority to PCT/CN2021/098909 priority patent/WO2021254214A1/zh
Publication of CN113821333A publication Critical patent/CN113821333A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例公开了一种安卓应用程序迁移的方法和装置,属于操作系统技术领域。所述方法包括:导出安卓应用程序的基础资源信息。调用Ashmem内核驱动程序,导出安卓应用程序的Ashmem资源信息。调用Binder内核驱动程序,导出安卓应用程序的Binder资源信息。生成包括导出的各类资源信息的安卓应用程序的资源信息集合。将安卓应用程序的资源信息集合发送至目的计算节点,由目的计算节点基于安卓应用程序的资源信息集合,实现对安卓应用程序的恢复。采用本申请,可以实现对安卓系统下的安卓应用程序的基础资源信息、Ashmem资源信息和Binder资源信息导出和恢复,以实现对安卓应用程序的迁移。

Description

安卓应用程序迁移的方法和装置
技术领域
本申请涉及通信技术领域,特别涉及一种安卓应用程序迁移的方法和装置。
背景技术
随着网络技术的不断发展,云手机(Cloudphone)也开始进入人们的生活。云手机中的应用程序均可以部署在云计算节点中,由云计算节点提供应用程序所需的计算资源,这样,可以有效避免物理手机的发热、耗电快等问题。在一些情况下,应用程序需要由当前的云计算节点迁移到其他云计算节点中,例如,用户希望某应用程序使用比当前云计算节点更高配置的硬件资源,则需要将该应用程序迁移到满足用户需求的云计算节点中。
常用的应用程序迁移工具,如用户态导出恢复(Checkpoint/Restore InUserspace,CRIU)工具,可以对运行在Linux系统中的应用程序的基础资源信息进行导出,生成该应用程序的资源信息集合,并在新的云计算节点中根据导出的该应用程序的资源信息集合,对该应用程序的基础资源进行恢复,以完成对该应用程序的迁移。其中,基础资源信息可以包括应用程序对应的进程信息、内存信息、文件信息等。
然而,目前云手机以安卓(Android)系统为主,即在云计算节点中运行的应用程序为安卓应用程序。安卓系统中包括有两种基础服务,匿名共享内存(Anonymous sharedmemory,Ashmem)服务和进程间通信(Binder)服务。安卓应用程序在运行时需要使用这两种服务,并会产生相应的Ashmem资源信息和Binder资源信息。采用上述CRIU工具只能对应用程序的基础资源信息进行导出和恢复,而无法对应用程序对应的Ashmem资源信息和Binder资源信息进行导出和恢复,也即是无法实现对安卓应用程序的迁移。
发明内容
本申请实施例提供了一种安卓应用程序迁移的方法和装置,可以将计算节点中的安卓系统下的安卓应用程序的资源进行导出和恢复,以实现对安卓应用程序的迁移。所述技术方案如下:
第一方面,提供了一种安卓应用程序的资源导出的方法,方法应用于原计算节点,该方法包括:
导出第一安卓应用程序的第一基础资源信息。调用第一匿名共享内存Ashmem内核驱动程序,导出第一安卓应用程序的第一Ashmem资源信息。调用第一进程间通信Binder内核驱动程序,导出第一安卓应用程序的第一Binder资源信息。生成包括第一基础资源信息、第一Ashmem资源信息和第一Binder资源信息的第一安卓应用程序的资源信息集合。将第一安卓应用程序的资源信息集合发送至目的计算节点,以使目的计算节点基于第一基础资源信息,恢复第一安卓应用程序的基础资源,调用第二Ashmem内核驱动程序,基于第一Ashmem资源信息,恢复第一安卓应用程序的Ashmem资源,调用第二Binder内核驱动程序,基于第一Binder资源信息,恢复第一安卓应用程序的Binder资源。
在本申请实施例提供的方案中,计算节点可以为服务器、虚拟机等。在计算节点中可以安装有安卓应用程序导出恢复工具。原计算节点可以通过安卓应用程序导出恢复工具中的基础资源管理模块对第一安卓应用程序的基础资源信息进行导出并写入第一安卓应用程序的资源信息集合中。导出的第一安卓应用程序的基础资源信息可以包括有该第一安卓应用程序的进程信息、文件信息、内存信息等。还可以通过安卓应用程序导出恢复工具中的Ashmem资源管理模块调用内核驱动模块中的Ashmem内核驱动程序,对Ashmem资源信息进行导出并写入第一安卓应用程序的资源信息集合中。Ashmem资源信息可以包括第一安卓应用程序的多个进程共享的目标共享内存信息和共享文件信息。还可以通过Binder资源管理模块调用内核驱动模块中的Binder内核驱动程序,对Binder资源信息进行导出并写入第一安卓应用程序的资源信息集合中。Binder资源信息可以包括第一安卓应用程序的客户端进程和目标应用程序的服务端进程之间的通信连接信息。
原计算节点在将第一安卓应用程序的基础资源信息、Ashmem资源信息和Binder资源信息写入第一安卓应用程序的资源信息集合中后,可以将该第一安卓应用程序的资源信息和发送至目标计算节点。由目的计算节点通过安卓应用程序导出恢复工具,基于第一基础资源信息,恢复第一安卓应用程序的基础资源,调用第二Ashmem内核驱动程序,基于第一Ashmem资源信息,恢复第一安卓应用程序的Ashmem资源,调用第二Binder内核驱动程序,基于第一Binder资源信息,恢复第一安卓应用程序的Binder资源。
通过本方案可以实现对安卓系统下的安卓应用程序的基础资源信息、Ashmem资源信息和Binder资源信息的导出,并由目标计算节点对以上导出的各资源进行恢复,以实现对安卓应用程序的迁移。
在一种可能的实现方式中,所述方法还包括:
检测所述第一安卓应用程序是否生成新的基础资源信息,如果检测到所述第一安卓应用程序生成新的基础资源信息,则导出新生成的基础资源信息。检测所述第一安卓应用程序是否生成新的Ashmem资源信息,如果检测到所述第一安卓应用程序生成新的Ashmem资源信息,则导出新生成的Ashmem资源信息。检测所述第一安卓应用程序是否生成新的Binder资源信息,如果检测到所述第一安卓应用程序生成新的Binder资源信息,则导出新生成的Binder资源信息。生成包括所述新生成的基础资源信息、所述新生成的Ashmem资源信息和所述新生成的Binder资源信息的第一安卓应用程序的新增资源信息集合。将所述第一安卓应用程序的新增资源信息集合发送至目的计算节点。
在本申请实施例所示的方案中,在对第一安卓应用程序热迁移的场景下,原计算节点中的安卓应用程序导出恢复工具在首次导出第一安卓应用程序的基础资源信息、Ashmem资源信息以及Binder资源信息后,还可以按照预设周期检测该第一安卓应用程序在原计算节点中是否有新生成的资源信息,如果有新生成的资源信息,则将新生成的资源信息导出写入第一安卓应用程序的新增资源信息集合中。如果检测到该第一安卓应用程序在原计算节点中的新生成的资源信息总量大于预设阈值,则可以停止该第一安卓应用程序在原计算节点中的运行。
通过本方案可以实现安卓应用程序从原计算节点到目的计算节点的热迁移。
第二方面,提供了一种安卓应用程序迁移的方法,方法应用于目的计算节点,该方法包括:
获取原计算节点发送的第一安卓应用程序的资源集合,其中,所述第一安卓应用程序的资源集合中包括所述第一安卓应用程序的第一基础资源信息、第一Ashmem资源信息和第一Binder资源信息。基于所述第一基础资源信息,恢复所述第一安卓应用程序的基础资源。调用Ashmem内核驱动程序,基于所述第一Ashmem资源信息,恢复所述第一安卓应用程序的Ashmem资源。调用Binder内核驱动程序,基于所述第一Binder资源信息,恢复所述第一安卓应用程序的Binder资源。
在本申请实施例所示的方案中,在目的计算节点中也安装有安卓应用程序导出恢复工具,目的计算节点在接收到原计算节点发送的第一安卓应用程序的基础资源信息集合后,可以通过该安卓应用程序导出恢复工具,基于第一基础资源信息,恢复第一安卓应用程序的基础资源。调用Ashmem内核驱动程序,基第一Ashmem资源信息,恢复第一安卓应用程序的Ashmem资源。调用Binder内核驱动程序,基于第一Binder资源信息,恢复第一安卓应用程序的Binder资源。
在一种可能的实现方式中,所述第一基础资源信息中包括所述第一安卓应用程序的进程信息和文件信息;
所述基于所述第一基础资源信息,恢复所述第一安卓应用程序的基础资源,包括:
基于所述进程信息,创建所述进程信息对应的进程。基于所述文件信息,在文件系统中创建所述文件信息对应的文件。
在本申请实施例所示的方案中,进程信息可以包括进程标识ID、进程状态等,文件信息可以包括文件名称、文件描述符、读写权限等。安卓应用程序导出恢复工具中的基础资源管理模块,可以根据进程信息创建进程,并配置进程状态。上述基础资源管理模块,可以基于进程信息,创建进程信息对应的进程,基于文件信息,在文件系统中创建文件信息对应的文件。
在一种可能的实现方式中,第一Ashmem资源信息包括所述第一安卓应用程序的多个进程共享的共享内存的目标内存信息和共享文件的目标文件信息,所述目标内存信息包括所述多个目标进程共享的共享内存的属性信息和存储数据,所述文件信息对应的文件包括所述目标文件信息对应的目标共享文件。
所述基于所述第一Ashmem资源信息,恢复所述第一安卓应用程序的Ashmem资源,包括:
基于目标内存信息,创建目标共享内存,并基于属性信息,配置目标共享内存。将存储数据写入目标共享内存,并作为目标共享文件的文件内容数据。
在本申请实施例所示的方案中,第一安卓应用程序的Ashmem资源信息可以包括第一安卓应用程序的多个进程共享的共享内存的目标内存信息和共享文件的目标文件信息。其中,目标内存信息中包括上述多个进程共享的共享内存的大小、读写权限、存储数据等,目标文件信息包括共享文件的名称、文件描述符等。安卓应用程序导出恢复工具,可以通过Ashmem资源管理模块调用内核驱动模块中的Ashmem内核驱动程序,基于目标内存信息,创建目标共享内存,并基于属性信息,配置目标共享内存,还可以将存储数据写入目标共享内存,并作为目标共享文件的文件内容数据。
在一种可能的实现方式中,所述第一Binder资源信息中包括所述第一安卓应用程序的客户端进程和第二安卓应用程序的服务端进程之间的通信连接信息,所述进程信息对应的进程包括所述第一安卓应用程序的客户端进程;
所述基于所述第一Binder资源信息,恢复所述第一安卓应用程序的Binder资源,包括:
基于所述通信连接信息,建立所述客户端进程和所述目的计算节点中所述第二安卓应用程序的服务端进程之间的通信连接。
在本申请实施例所示的方案中,第一安卓应用程序的Binder资源信息可以包括第一安卓应用程序的客户端进程和第一安卓应用程序的服务端进程之间的通信连接信息,该通信连接信息中可以包括第一安卓应用程序的客户端进程的Binder客户端结构体(binder_ref)的基础数据和第三安卓应用程序的服务端进程的Binder服务端结构体(binder_node)的标识信息。安卓应用程序导出恢复工具可以通过Binder资源管理模块调用内核驱动模块中的Binder内核驱动程序,根据上述Binder服务端结构体(binder_node)的标识信息,在本计算节点中查找对应的第二安卓应用程序的服务端进程,进而建立第一安卓应用程序的客户端进程和第二安卓应用程序的服务端进程的通信连接。
第三方面,提供了一种安卓应用程序快照恢复的方法,所述方法应用于计算节点,所述方法包括:
接收对第一安卓应用程序的第一时刻的快照恢复指令。获取存储的所述第一时刻对应的第一安卓应用程序的快照,其中,所述第一安卓应用程序的快照包括所述第一安卓应用程序的第一基础资源信息、第一Ashmem资源信息和第一Binder资源信息。基于所述第一基础资源信息,恢复所述第一安卓应用程序的基础资源。调用Ashmem内核驱动程序,基于所述第一Ashmem资源信息,恢复所述第一安卓应用程序的Ashmem资源。调用Binder内核驱动程序,基于所述第一Binder资源信息,恢复所述第一安卓应用程序的Binder资源。
在本申请实施例所示的方案中,计算节点可以存储有第一安卓应用程序的至少一个时刻生成的快照。在第一安卓应用程序运行出现问题时,用户可以在存储的第一安卓应用程序的快照中,指定一个时刻的快照,使用该快照对第一安卓应用程序进行快照恢复。在使用快照对安卓应用程序进行恢复的过程,和上述第二方面中在安卓应用程序迁移过程中,对安卓应用程序的基础资源进行恢复的处理相同,此处的快照和上述第一方面中的资源信息集合中均包括有安卓应用程序的基础资源信息、Ashmem资源信息和Binder资源信息。
在一种可能的实现方式中,所述方法还包括:
在所述第一时刻,接收对所述第一安卓应用程序的快照生成指令。导出所述第一基础资源信息。调用所述Ashmem内核驱动程序,导出所述第一Ashmem资源信息。调用所述Binder内核驱动程序,导出所述第一Binder资源信息。生成包括所述第一基础资源信息、所述第一Ashmem资源信息和所述第一Binder资源信息的所述第一安卓应用程序的快照。将所述第一安卓应用程序的快照和所述第一时刻对应存储。
在本申请实施例所示的方案中,为了后续在第一安卓应用程序可出现问题时,可以及时对第一安卓应用程序进行恢复,用户在指定的至少一个时刻,通过计算节点生成第一安卓应用程序的快照,并将生成的第一安卓应用程序的快照和生成该快照的第一时刻对应存储。
第四方面,提供了一种安卓应用程序迁移的装置,所述装置应用于目的计算节点,所述装置包括:
获取模块,用于获取原计算节点发送的第一安卓应用程序的资源集合,其中,所述第一安卓应用程序的资源集合中包括所述第一安卓应用程序的第一基础资源信息、第一Ashmem资源信息和第一Binder资源信息;基础资源管理模块,用于导出第一安卓应用程序的第一基础资源信息;
Ashmem资源管理模块,用于调用第一匿名共享内存Ashmem内核驱动程序,导出所述第一安卓应用程序对应的第一Ashmem资源信息;
Binder资源管理模块,用于调用第一进程间通信Binder内核驱动程序,导出所述第一安卓应用程序对应的第一Binder资源信息;
生成模块,用于生成包括所述第一基础资源信息、所述第一Ashmem资源信息和所述第一Binder资源信息的所述第一安卓应用程序的资源信息集合;
发送模块,用于将所述第一安卓应用程序的资源信息集合发送至目的计算节点,以使所述目的计算节点基于所述第一基础资源信息,恢复第一安卓应用程序的基础资源,调用第二Ashmem内核驱动程序,基于所述第一Ashmem资源信息,恢复所述第一安卓应用程序的Ashmem资源,调用第二Binder内核驱动程序,基于所述第一Binder资源信息,恢复所述第一安卓应用程序的Binder资源。
在一种可能的实现方式中,所述发送模块,还用于将所述第一安卓应用程序的资源信息集合发送至第一计算节点;
所述基础资源管理模块,还用于检测所述第一安卓应用程序是否生成新的基础资源信息,如果检测到所述第一安卓应用程序生成新的基础资源信息,则导出新生成的基础资源信息;
所述Ashmem资源管理模块,还用于检测所述第一安卓应用程序是否生成新的Ashmem资源信息,如果检测到所述第一安卓应用程序生成新的Ashmem资源信息,则导出新生成的Ashmem资源信息;
所述Binder资源管理模块,还用于检测所述第一安卓应用程序是否生成新的Binder资源信息,如果检测到所述第一安卓应用程序生成新的Binder资源信息,则导出新生成的Binder资源信息;
所述生成模块,还用于生成包括所述新生成的基础资源信息、所述新生成的Ashmem资源信息和所述新生成的Binder资源信息的第一安卓应用程序的新增资源信息集合;
所述发送模块,还用于将所述第一安卓应用程序的新增资源信息集合发送至所述目的计算节点。
第五方面,提供了一种安卓应用程序迁移的装置,所述装置应用于目的计算节点,所述装置包括:
获取模块,用于获取原计算节点发送的第一安卓应用程序的资源集合,其中,所述第一安卓应用程序的资源集合中包括所述第一安卓应用程序的第一基础资源信息、第一Ashmem资源信息和第一Binder资源信息;
基础资源管理模块,用于基于所述第一基础资源信息,恢复所述第一安卓应用程序的基础资源;
Ashmem资源管理模块,用于调用Ashmem内核驱动程序,基于所述第一Ashmem资源信息,恢复所述第一安卓应用程序的Ashmem资源;
Binder资源管理模块,用于调用Binder内核驱动程序,基于所述第一Binder资源信息,恢复所述第一安卓应用程序的Binder资源。
在一种可能的实现方式中,所述第一基础资源信息中包括所述第一安卓应用程序的进程信息和文件信息;
所述基础资源管理模块,用于:
基于所述进程信息,创建所述进程信息对应的进程;
基于所述文件信息,在文件系统中创建所述文件信息对应的文件。
在一种可能的实现方式中,所述第一Ashmem资源信息包括所述第一安卓应用程序的多个进程共享的共享内存的目标内存信息和共享文件的目标文件信息,所述目标内存信息包括所述多个目标进程共享的共享内存的属性信息和存储数据,所述文件信息对应的文件包括所述目标文件信息对应的目标共享文件;
所述Ashmem资源管理模块,用于:
基于所述目标内存信息,创建目标共享内存,并基于所述属性信息,配置所述目标共享内存;
将所述存储数据写入所述目标共享内存,并作为所述目标共享文件的文件内容数据。
在一种可能的实现方式中,所述第一Binder资源信息中包括所述第一安卓应用程序的客户端进程和第二安卓应用程序的服务端进程之间的通信连接信息,所述进程信息对应的进程包括所述第一安卓应用程序的客户端进程;
所述Binder资源管理模块,用于:
基于所述通信连接信息,建立所述客户端进程和所述目的计算节点中所述第二安卓应用程序的服务端进程之间的通信连接。
第六方面,提供了一种安卓应用程序快照恢复的装置,所述方法应用于计算节点,所述装置包括:
接收模块,用于接收对第一安卓应用程序的第一时刻的快照恢复指令;
获取模块,用于获取存储的所述第一时刻对应的第一安卓应用程序的快照,其中,所述第一安卓应用程序的快照包括所述第一安卓应用程序的第一基础资源信息、第一Ashmem资源信息和第一Binder资源信息;
基础资源管理模块,用于基于所述第一基础资源信息,恢复所述第一安卓应用程序的基础资源;
Ashmem资源管理模块,用于调用Ashmem内核驱动程序,基于所述第一Ashmem资源信息,恢复所述第一安卓应用程序的Ashmem资源;
Binder资源管理模块,用于调用Binder内核驱动程序,基于所述第一Binder资源信息,恢复所述第一安卓应用程序的Binder资源。
在一种可能的实现方式中,所述接收模块还用于:
在所述第一时刻,接收对所述第一安卓应用程序的快照生成指令;
所述基础资源管理模块,还用于导出所述第一基础资源信息;
所述Ashmem资源管理模块,还用于调用所述Ashmem内核驱动程序,导出所述第一Ashmem资源信息;
所述Binder资源管理模块,还用于调用所述Binder内核驱动程序,导出所述第一Binder资源信息;
所述装置还包括生成模块,用于生成包括所述第一基础资源信息、所述第一Ashmem资源信息和所述第一Binder资源信息的所述第一安卓应用程序的快照;
所述装置还包括存储模块,用于将所述第一安卓应用程序的快照和所述第一时刻对应存储。
第七方面,提供了一种计算节点,所述计算节点包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上述第一方面所述的安卓应用程序迁移的方法所执行的操作,或实现如上述第二方面所述的安卓应用程序迁移的方法所执行的操作,或者实现上述第三方面所述的安卓应用程序快照恢复的方法所执行的操作。
第八方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如上述第一方面所述的安卓应用程序迁移的方法所执行的操作,或实现如上述第二方面所述的安卓应用程序迁移的方法所执行的操作,或者实现上述第三方面所述的安卓应用程序快照恢复的方法所执行的操作。
第九方面,提供了一种包含指令的计算机程序产品,当所述计算机程序产品在车辆变道趋势识别设备上运行时,使得所述计算节点执行如上述第一方面所述的安卓应用程序迁移的方法,或执行如上述第二方面所述的安卓应用程序迁移的方法,或者执行上述第三方面所述的安卓应用程序快照恢复的方法。
本申请实施例提供的技术方案带来的有益效果是:
本申请实施例所提供的技术方案,除了可以导出安卓应用程序的基础资源信息外,还可以导出安卓应用程序所独有的Ashmem资源信息和Binder资源信息。此外,在生成包括各资源信息的资源信息集合后,将安卓应用程序的资源信息集合发送至目的计算节点后,目的计算节点可以对安卓应用程序的基础资源、Ashmem资源和Binder资源进行恢复,以实现对安卓应用程序的迁移。
附图说明
图1是本申请实施例提供的一种安卓应用程序的迁移场景示意图;
图2是本申请实施例提供的一种安卓应用程序的快照恢复场景示意图;
图3是本申请实施例提供的一种安卓应用程序导出恢复工具的结构示意图;
图4是本申请实施例提供的一种Ashmem服务原理示意图;
图5是本申请实施例提供的一种Binder服务原理示意图;
图6是本申请实施例提供的一种安卓应用程序迁移的方法流程图;
图7是本申请实施例提供的一种安卓应用程序的快速启动场景示意图;
图8是本申请实施例提供的一种安卓应用程序快照恢复的方法流程图;
图9是本申请实施例提供的一种安卓应用程序迁移的装置的结构示意图;
图10是本申请实施例提供的一种安卓应用程序迁移的装置的结构示意图;
图11是本申请实施例提供的一种安卓应用程序快照恢复的装置的结构示意图;
图12是本申请实施例提供的一种计算节点的结构示意图。
具体实施方式
本申请实施例提供了一种安卓应用程序迁移的方法和装置,该方法可以由安装有安卓应用程序导出恢复工具的原计算节点和目的计算节点实现。原计算节点和目的计算节点均可以为服务器、虚拟机等。
如图1所示,该方法可以应用于安卓应用程序迁移的场景。安装有安卓应用程序导出恢复工具的原计算节点,可以通过安卓应用程序导出恢复工具将第一安卓应用程序的基础资源信息、Ashmem资源信息和Binder资源信息导出,写入资源信息集合。并发送至同样安装有安卓应用程序导出恢复工具的目的计算节点,由目的计算节点对第一安卓应用程序进行恢复。
如图2所示,该方法还可以应用于在安卓应用程序快速启动场景下,。部署安装有安卓应用程序迁移工具安卓应用程序导出恢复工具的原计算节点中可以安装有多个安卓应用程序,该原计算节点可以通过安卓应用程序导出恢复工具,导出需要在目标计算节点中快速启动的第一安卓应用程序(如图2中的安卓应用程序2)的资源信息集合,并发送至启动资源存储设备进行存储。目的计算节点可以在启动资源存储设备中获取上述需要快速启动的第一安卓应用程序的资源信息集合,并通过安卓应用程序导出恢复工具对目的安卓应用程序进行恢复,以实现在目标计算节点中对第一安卓应用程序的快速启动。
上述计算节点中安装的安卓应用程序导出恢复工具可以为一个软件工具,如图3所示,该安卓应用程序导出恢复工具可以包括有对外接口网关模块、资源管理模块和内核驱动模块三个模块。其中,对外接口网关模块、资源管理模块运行在用户空间,内核驱动模块运行在内核空间。对外接口网关模块用于提供该安卓应用程序导出恢复工具的对外接口,如命令行接口、超文本传输协议(Hyper Text Transfer Protocol,HTTP)接口等。资源管理模块中包括有基础资源管理模块、匿名共享内存(Anonymous shared memory,Ashmem)资源管理模块和进程间通信(Binder)模块。内核驱动模块中包括Ashmem内核驱动模块和Binder内核驱动模块。其中,基础资源管理模块用于对安卓应用程序的基础资源信息进行导出和恢复。Ashmem资源管理模块用于调用内核驱动模块中的Ashmem内核驱动程序以实现对Ashmem资源信息的导出和恢复。Binder资源管理模块用于调用内核驱动模块中的Binder内核驱动程序以实现对Binder资源信息的导出和恢复。
为了便于对本申请的理解,下面对本申请中的部分技术术语进行解释说明。
一、Ashmem服务
如图4所示,目标安卓应用程序包括进程A和进程B,进程A和进程B分别对应有文件描述符表(fdt)。在文件系统(file sytem)中包括有各进程对应的文件,Ashmem模块为共享内存模块。在进程A和进程B存在共享内存的情况下,进程A和进程B分别对应的文件描述符表中包含有指向文件系统中的同一文件fileN的文件描述符,而fileN的文件内容数据存储在Ashmem模块中的目标共享内存中。
二、Binder服务
如图5所示,安卓应用程序A中包括客户端进程,安卓应用程序B中包括有服务端进程。安卓应用程序A中的客户端进程在内核空间中的Binder模块“BinderA”。该BinderA包括Binder进程结构体(binder_proc)、Binder客户端结构体(binder_ref)和Binder线程信息结构体(binder_thread)。安卓应用程序B中的服务端进程在内核空间中有Binder模块“BinderB”。该BinderB包括binder_proc、binder_thread和Binder服务端结构体(binder_node)。如果要建立安卓应用程序A中的客户端进程和安卓应用程序B的服务端进程之间的通信连接,则需要使客户端进程的binder_ref中的节点指向服务端进程的binder_node。
如图6所示是本申请实施例提供的一种安卓应用程序迁移的方法流程图。该方法的处理流程可以包括如下步骤:
步骤601、原计算节点导出第一安卓应用程序的第一基础资源信息。
在实施中,原计算节点中可以部署有安卓应用程序导出恢复工具,在需要将第一安卓应用程序进行迁移时,可以向该安卓应用程序导出恢复工具发送对第一安卓应用程序的资源迁移指令,该资源迁移指令可以为命令行形式、HTTP请求形式等。
安卓应用程序导出恢复工具通过对外接口网关接收该对第一安卓应用程序的资源迁移指令后,可以通过基础资源管理模块对第一安卓应用程序的基础资源信息进行导出。导出的第一安卓应用程序的基础资源信息可以包括有该第一安卓应用程序的进程信息、文件信息、内存信息等。其中,进程信息可以包括进程标识(Identity document,ID)、进程状态等,文件信息可以包括文件大小、文件读写权限、文件修改时间等,内存信息可以包括已使用内存区域列表、已使用内存中的存储数据等。
步骤602、原计算节点调用第一Ashmem内核驱动程序,导出第一安卓应用程序的第一Ashmem资源信息。
在实施中,安卓应用程序导出恢复工具在接收到对第一安卓应用程序的资源迁移指令后,还可以通过Ashmem资源管理模块调用内核驱动模块中的第一Ashmem内核驱动程序,对Ashmem资源信息进行导出。Ashmem资源信息可以包括第一安卓应用程序的多个进程共享的目标共享内存信息和共享文件信息。其中,目标共享内存信息中包括共享内存的属性、存储数据等,共享文件信息包括共享文件的名称、大小、文件描述符等。
步骤603、原计算节点调用第一Binder内核驱动程序,导出第一安卓应用程序的第一Binder资源信息。
在实施中,安卓应用程序导出恢复工具在接收到对第一安卓应用程序的资源导出指令后,还可以通过Binder资源管理模块调用内核驱动模块中的Binder内核驱动程序,对Binder资源信息进行导出。Binder资源信息可以包括第一安卓应用程序的客户端进程和第二安卓应用程序的服务端进程之间的通信连接信息。该通信连接信息中可以包括第一安卓应用程序的客户端进程的binder_ref和第二安卓应用程序中服务端进程的binder_node的标识信息,该通信连接信息用于指示第一安卓应用程序的客户端进程的binder_ref和第二安卓应用程序中服务端进程的binder_node存在连接关系。
步骤604、原计算节点生成包括第一基础资源信息、第一Ashmem资源信息和第一Binder资源信息的第一安卓应用程序的资源集合。
在实施中,可以将导出的第一基础资源信息、第一Ashmem资源信息和第一Binder资源信息写入第一安卓应用程序的资源集合中。
步骤605、原计算节点将第一安卓应用程序的资源信息集合发送至目的计算节点。
在实施中,用户可以指定需要将第一安卓应用程序迁移到目的计算节点,那么,当原计算节点生成第一安卓应用程序的资源信息集合后,可以将第一安卓应用程序的资源信息集合发送至目的计算节点。
步骤606、目的计算节点获取原计算节点发送的第一安卓应用程序的资源信息集合。
步骤607、目的计算节点基于第一基础资源信息,恢复第一安卓应用程序的基础资源。调用第二Ashmem内核驱动程序,基于第一Ashmem资源信息,恢复第一安卓应用程序的Ashmem资源。调用第二Binder内核驱动程序,基于第一Binder资源信息,恢复第一安卓应用程序的Binder资源。
在实施中,目的计算节点中同样安装有安卓应用程序导出恢复工具,在获取到原计算节点发送的第一安卓应用程序的资源信息集合后,目的计算节点可以通过安卓应用程序导出恢复工具对第一安卓应用程进行恢复。下面对于通过安卓应用程序导出恢复工具实现对第一安卓应用程序的基础资源、Ashmem资源和Binder资源的恢复分别进行说明:
一、第一安卓应用程序的基础资源的恢复。
通过基础资源管理模块,基于第一安卓应用程序的第一基础资源信息,恢复第一安卓应用程序的基础资源。
在第一安卓应用程序的基础资源信息中包括第一安卓应用程序的进程信息、文件信息、内存信息等。其中,进程信息可以包括进程标识ID、进程状态等,文件信息可以包括文件名称、文件读写权限、文件修改时间、文件描述符等,内存信息可以包括已使用内存区域列表、已使用内存中的存储数据等。
基础资源管理模块可以根据进程信息创建相应进程,设置进程状态。还可以根据内存信息创建已使用内存区域列表,在相应内存区域写入对应的存储数据。还可以根据文件信息,在文件系统(File System)中创建相应文件,并配置文件读写权限、文件修改时间等文件属性,还可以创建相应进程的文件描述符表,并在该文件描述符表中将新创建的文件和相应文件信息中的文件描述符相对应。
二、第一安卓应用程序的Ashmem资源恢复。
通过Ashmem资源管理模块调用内核驱动模块中的Ashmem内核驱动程序,基于第二Ashmem资源信息,恢复第二安卓应用程序的Ashmem资源。
第一安卓应用程序的Ashmem资源信息可以包括第一安卓应用程序的多个进程共享的共享内存的目标内存信息和共享文件的目标文件信息。其中,目标内存信息中包括上述多个进程共享的共享内存的大小、读写权限、存储数据等,目标文件信息包括共享文件的名称、文件描述符等。
此处需要说明的是,此处的第一安卓应用程序的多个进程已经在上述基础资源恢复时创建完成。该目标文件信息对应的目标共享文件也已经在上述基础资源恢复时创建完成。
Ashmem内核驱动程序可以按照目标内存信息中的多个进程共享的共享内存的大小,创建目标共享内存,并配置其读写权限,将存储数据写入到创建的目标共享内存中。再将目标共享内存中的存储数据作为目标共享文件的内容数据。完成第一安卓应用程序的Ashmem资源恢复。
三、第一安卓应用程序的Binder资源恢复。
通过Binder资源管理模块调用内核驱动模块中的Binder内核驱动程序,基于第二Binder资源信息,恢复第一安卓应用程序的Binder资源。
第一安卓应用程序的Binder资源信息可以包括第一安卓应用程序的客户端进程和第一安卓应用程序的服务端进程之间的通信连接信息,该通信连接信息中可以包括第一安卓应用程序的客户端进程的binder_ref的基础数据和第二安卓应用程序的服务端进程的binder_node的标识信息。此外,Binder资源信息还可以包括配置信息,如第二安卓应用程序的客户端进程的binder_proc的基础数据、binder_thread的基础数据。还可以包括该客户端进程和服务端进程之间的通信数据等。
此处需要说明的是,此处的第一安卓应用程序的客户端进程已经在上述基础资源恢复时创建完成。第二安卓应用程序通常为公共类应用程序,且该第二安卓应用程序既要安装在原计算节点中,也要安装在目的计算节点中。
Binder内核驱动程序可以根据上述配置信息,在本计算节点中创建该第一安卓应用程序的客户端进程的binder_proc、binder_thread、binder_ref。然后,根据通信连接信息中第二安卓应用程序的服务端进程的binder_node的标识信息,查找第二安卓应用程序的服务端进程,并使第一安卓应用程序的客户端进程的binder_ref中节点指向查找到的第二安卓应用程序的服务端进程的binder_node,以实现第一安卓应用程序的客户端进程和第二安卓应用程序的服务端之间的通信连接。
在一种可能的实现方式中,在安卓应用程序的热迁移场景下,原计算节点可以将该第一安卓应用程序的资源集合发送至目的计算节点,由目的计算节点根据接收到的第一安卓应用程序的资源集合对第一安卓应用程序进行恢复。在此场景下,第一安卓应用程序在原计算节点中还可以处于运行状态,则原计算节点可以按照预设检测周期,检测第一安卓应用程序是否产生新的资源信息。相应的,处理可以如下:
通过安卓应用程序导出恢复工具的基础资源管理模块,检测第一安卓应用程序是否生成新的基础资源信息,如果检测到第一安卓应用程序生成新的基础资源信息,则导出新生成的基础资源信息。
通过安卓应用程序导出恢复工具的Ashmem资源管理模块,检测第一安卓应用程序是否生成新的基础资源信息,如果检测到第一安卓应用程序生成新的基础资源信息,则导出新生成的基础资源信息导出。
通过安卓应用程序导出恢复工具的Binder资源管理模块,检测第一安卓应用程序是否生成新的Binder资源信息,如果检测到第一安卓应用程序生成新的Binder资源信息,则导出新生成的Binder资源信息。
生成包括新生成的基础资源信息、新生成的Ashmem资源信息和新生成的Binder资源信息的第一安卓应用程序的新增资源集合并将第一安卓应用程序的新增资源集合发送至目的计算节点。
此外,如果在第一安卓应用程序迁移到目的计算节点后,在原计算节点中检测到的第一安卓应用程序的新生成的基础资源信息、新生成的Ashmem资源信息和新生成的Binder资源信息的总量大于预设阈值则停止第一安卓应用程序在原计算节点中的运行。
在一种可能的实现方式中,在本计算节点中可以安装有包括第一安卓应用程序在内的多个安卓应用程序,而第一安卓应用程序需要在独立的计算节点中运行,则本计算节点可以通过安卓应用程序导出恢复工具导出该第一安卓应用程序的基础资源信息、Ashmem资源信息和Binder资源信息,写入第一安卓应用程序的资源信息集合。然后,在原计算节点中停止运行该第一安卓应用程序,并发送至启动资源存储设备中进行存储。待运行第一安卓应用程序的目的计算节点可以在接收到对第一安卓应用程序快速启动的指令后,向启动资源存储设备获取第一安卓应用程序的资源信息集合,并执行按照上述步骤707中对第一安卓应用程序的基础资源、Ashmem资源以及Binder资源的恢复,完成第一安卓应用程序在目的计算节点中的快速启动。
本申请实施例中,除了可以导出安卓应用程序的基础资源信息外,还可以导出安卓应用程序所独有的Ashmem资源信息和Binder资源信息。此外,在生成包括各资源信息的资源信息集合后,将安卓应用程序的资源信息集合发送至目的计算节点后,目的计算节点可以对安卓应用程序的基础资源、Ashmem资源和Binder资源进行恢复,以实现对安卓应用程序的迁移。
本申请实施例还提供了一种安卓应用程序快照恢复的方法,该方法可以由安装有安卓应用程序导出恢复工具的计算节点实现。
如图7所示,该方法可以应用于安卓应用程序快照恢复的场景。安装有安卓应用程序迁移工具的计算节点,可以通过安卓应用程序迁移工具在至少一个指定时刻将第一安卓应用程序的基础资源信息、Ashmem资源信息和Binder资源信息导出,写入第一安卓应用程序的快照中。在安卓应用程序出现问题时,可以根据需要,获取某一时刻导出的第一安卓应用程序的快照,并通过安卓应用程序导出恢复工具进行第一安卓应用程序的恢复。
如图8所示是本申请实施例提供的一种安卓应用程序迁移的方法流程图。该方法的处理流程可以包括如下步骤:
步骤801、接收对第一安卓应用程序的第一时刻的快照恢复指令。
在实施中,计算节点可以存储有第一安卓应用程序的至少一个时刻生成的快照。在第一安卓应用程序运行出现问题时,用户可以向计算节点发送对第一应用程序的第一时刻的快照恢复指令。
步骤802、获取存储的第一时刻对应的第一安卓应用程序的快照。
其中,第一安卓应用程序的快照包括第一安卓应用程序的第一基础资源信息、第一Ashmem资源信息和第一Binder资源信息。
步骤803、基于第一基础资源信息,恢复第一安卓应用程序的基础资源,调用Ashmem内核驱动程序,基于第一Ashmem资源信息,恢复第一安卓应用程序的Ashmem资源,调用Binder内核驱动程序,基于第一Binder资源信息,恢复第一安卓应用程序的Binder资源。
需要说明的是,在该步骤803中,计算节点基于第一安卓应用程序某一刻的快照对第一安卓应用程序进行恢复的实现方式,与上述步骤607中,目的计算节点根据第一安卓应用程序的资源信息集合对第一安卓应用程序进行恢复的方法相同,在此不再赘述。
在一种可能的实现方式中,用户可以在至少一个指定时刻,通过计算节点生成第一安卓应用程序的快照并进行存储,以便在第一安卓应用程序出现问题时使用。相应的,处理可以如下:在第一时刻,接收对第一安卓应用程序的快照生成指令。导出第一基础资源信息。调用Ashmem内核驱动程序,导出第一Ashmem资源信息。调用Binder内核驱动程序,导出第一Binder资源信息。生成包括第一基础资源信息、第一Ashmem资源信息和第一Binder资源信息的所述第一安卓应用程序的快照。将第一安卓应用程序的快照和第一时刻对应存储。
基于相同的技术构思,本申请实施例还提供了一种安卓应用程序迁移的装置,该装置可以应用于计算节点中,如图9所示,该装置包括:
基础资源管理模块910,用于导出第一安卓应用程序的第一基础资源信息。具体可以实现上述步骤601中的基础资源信息导出功能,以及其他隐含步骤。
Ashmem资源管理模块920,用于第一Ashmem内核驱动程序,导出所述第一安卓应用程序对应的第一Ashmem资源信息。具体可以实现上述步骤602中的Ashmem资源信息导出功能,以及其他隐含步骤。
Binder资源管理模块930,用于调用第一Binder内核驱动程序,导出所述第一安卓应用程序对应的第一Binder资源信息。具体可以实现上述步骤603中的Binder资源信息导出功能,以及其他隐含步骤。
生成模块940,用于生成包括所述第一基础资源信息、所述第一Ashmem资源信息和所述第一Binder资源信息的所述第一安卓应用程序的资源信息集合。具体可以实现上述步骤604中的生成功能,以及其他隐含步骤。
发送模块950,用于将所述第一安卓应用程序的资源信息集合发送至目的计算节点,以使所述目的计算节点基于所述第一基础资源信息,恢复第一安卓应用程序的基础资源,调用第二Ashmem内核驱动程序,基于所述第一Ashmem资源信息,恢复所述第一安卓应用程序的Ashmem资源,调用第二Binder内核驱动程序,基于所述第一Binder资源信息,恢复所述第一安卓应用程序的Binder资源。具体可以实现上述步骤605中的发送功能,以及其他隐含步骤。
在一种可能的实现方式中,所述发送模块950,还用于将所述第一安卓应用程序的资源信息集合发送至第一计算节点;
所述基础资源管理模块,还用于检测所述第一安卓应用程序是否生成新的基础资源信息,如果检测到所述第一安卓应用程序生成新的基础资源信息,则导出新生成的基础资源信息;
所述Ashmem资源管理模块920,还用于检测所述第一安卓应用程序是否生成新的Ashmem资源信息,如果检测到所述第一安卓应用程序生成新的Ashmem资源信息,则导出新生成的Ashmem资源信息;
所述Binder资源管理模块930,还用于检测所述第一安卓应用程序是否生成新的Binder资源信息,如果检测到所述第一安卓应用程序生成新的Binder资源信息,则导出新生成的Binder资源信息;
所述生成模块940,还用于生成包括所述新生成的基础资源信息、所述新生成的Ashmem资源信息和所述新生成的Binder资源信息的第一安卓应用程序的新增资源信息集合;
所述发送模块950,还用于将所述第一安卓应用程序的新增资源信息集合发送至所述目的计算节点。
还需要说明的是,上述实施例提供的安卓应用程序迁移的装置在安卓应用程序迁移时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将原计算节点的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的安卓应用程序迁移的装置与安卓应用程序迁移的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
基于相同的技术构思,本申请实施例还提供了一种安卓应用程序迁移的装置,该装置可以应用于计算节点中,如图10所示,该装置包括:
获取模块1010,用于获取原计算节点发送的第一安卓应用程序的资源集合,其中,所述第一安卓应用程序的资源集合中包括所述第一安卓应用程序的第一基础资源信息、第一Ashmem资源信息和第一Binder资源信息。具体可以实现上述步骤606中的获取功能,以及其他隐含步骤。
基础资源管理模块1020,用于基于所述第一基础资源信息,恢复所述第一安卓应用程序的基础资源。具体可以实现上述步骤607中的基础资源恢复功能,以及其他隐含步骤。
Ashmem资源管理模块1030,用于调用Ashmem内核驱动程序,基于所述第一Ashmem资源信息,恢复所述第一安卓应用程序的Ashmem资源。具体可以实现上述步骤607中的Ashmem资源恢复功能,以及其他隐含步骤。
Binder资源管理模块1040,用于调用Binder内核驱动程序,基于所述第一Binder资源信息,恢复所述第一安卓应用程序的Binder资源。具体可以实现上述步骤607中的Binder资源恢复功能,以及其他隐含步骤。
在一种可能的实现方式中,所述第一基础资源信息中包括所述第一安卓应用程序的进程信息和文件信息;
所述基础资源管理模块1020,用于:
基于所述进程信息,创建所述进程信息对应的进程;
基于所述文件信息,在文件系统中创建所述文件信息对应的文件。
在一种可能的实现方式中,所述第一Ashmem资源信息包括所述第一安卓应用程序的多个进程共享的共享内存的目标内存信息和共享文件的目标文件信息,所述目标内存信息包括所述多个目标进程共享的共享内存的属性信息和存储数据,所述文件信息对应的文件包括所述目标文件信息对应的目标共享文件;
所述Ashmem资源管理模块1030,用于:
基于所述目标内存信息,创建目标共享内存,并基于所述属性信息,配置所述目标共享内存;
将所述存储数据写入所述目标共享内存,并作为所述目标共享文件的文件内容数据。
在一种可能的实现方式中,所述第一Binder资源信息中包括所述第一安卓应用程序的客户端进程和第二安卓应用程序的服务端进程之间的通信连接信息,所述进程信息对应的进程包括所述第一安卓应用程序的客户端进程;
所述Binder资源管理模块1040,用于:
基于所述通信连接信息,建立所述客户端进程和所述目的计算节点中所述第二安卓应用程序的服务端进程之间的通信连接。
还需要说明的是,上述实施例提供的安卓应用程序迁移的装置在安卓应用程序迁移时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将目的计算节点的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的安卓应用程序迁移的装置与安卓应用程序迁移的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
基于相同的技术构思,本申请实施例还提供了一种安卓应用程序快照恢复的装置,该装置可以应用于计算节点中,如图11所示,该装置包括:
接收模块1110,用于接收对第一安卓应用程序的第一时刻的快照恢复指令;
获取模块1120,用于获取存储的所述第一时刻对应的第一安卓应用程序的快照,其中,所述第一安卓应用程序的快照包括所述第一安卓应用程序的第一基础资源信息、第一Ashmem资源信息和第一Binder资源信息;
基础资源管理模块1130,用于基于所述第一基础资源信息,恢复所述第一安卓应用程序的基础资源;
Ashmem资源管理模块1140,用于调用Ashmem内核驱动程序,基于所述第一Ashmem资源信息,恢复所述第一安卓应用程序的Ashmem资源;
Binder资源管理模块1150,用于调用Binder内核驱动程序,基于所述第一Binder资源信息,恢复所述第一安卓应用程序的Binder资源。
在一种可能的实现方式中,所述接收模块1110还用于:
在所述第一时刻,接收对所述第一安卓应用程序的快照生成指令;
所述基础资源管理模块1130,还用于导出所述第一基础资源信息;
所述Ashmem资源管理模块1140,还用于调用所述Ashmem内核驱动程序,导出所述第一Ashmem资源信息;
所述Binder资源管理模块1150,还用于调用所述Binder内核驱动程序,导出所述第一Binder资源信息;
所述装置还包括生成模块,用于生成包括所述第一基础资源信息、所述第一Ashmem资源信息和所述第一Binder资源信息的所述第一安卓应用程序的快照;
所述装置还包括存储模块,用于将所述第一安卓应用程序的快照和所述第一时刻对应存储。
还需要说明的是,上述实施例提供的安卓应用程序快照恢复的装置在安卓应用程序快照恢复时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将计算节点的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的安卓应用程序快照恢复的装置与安卓应用程序快照恢复的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
如图12所示是本申请实施例提供的一种计算节点1200的示意图。在图12中,计算节点可以包括有处理器1201和存储器1202。处理器1201可以是中央处理器(centralprocessing unit,CPU)。处理器1201可以是指一个处理器,也可以包括多个处理器。存储器1202可以包括易失性存储器,例如随机存取存储器(random access memory,RAM);存储器也可以包括非易失性存储器,例如只读存储器(read-only memory,ROM),快闪存储器等。存储器还可以包括上述种类的存储器的组合。存储器1202可以是指一个存储器,也可以包括多个存储器。存储器1202中存储有计算机可读指令,该计算机可读指令可以由处理器1201执行,以实现上述实施例提供的安卓应用程序迁移或者快照恢复的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在设备上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴光缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是设备能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(如软盘、硬盘和磁带等),也可以是光介质(如数字视盘(Digital Video Disk,DVD)等),或者半导体介质(如固态硬盘等)。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请一个实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (18)

1.一种安卓应用程序迁移的方法,其特征在于,所述方法应用于原计算节点,所述方法包括:
导出第一安卓应用程序的第一基础资源信息;
调用第一匿名共享内存Ashmem内核驱动程序,导出所述第一安卓应用程序的第一Ashmem资源信息;
调用第一进程间通信Binder内核驱动程序,导出所述第一安卓应用程序的第一Binder资源信息;
生成包括所述第一基础资源信息、所述第一Ashmem资源信息和所述第一Binder资源信息的所述第一安卓应用程序的资源信息集合;
将所述第一安卓应用程序的资源信息集合发送至目的计算节点,以使所述目的计算节点基于所述第一基础资源信息,恢复第一安卓应用程序的基础资源,调用第二Ashmem内核驱动程序,基于所述第一Ashmem资源信息,恢复所述第一安卓应用程序的Ashmem资源,调用第二Binder内核驱动程序,基于所述第一Binder资源信息,恢复所述第一安卓应用程序的Binder资源。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
检测所述第一安卓应用程序是否生成新的基础资源信息,如果检测到所述第一安卓应用程序生成新的基础资源信息,则导出新生成的基础资源信息;
检测所述第一安卓应用程序是否生成新的Ashmem资源信息,如果检测到所述第一安卓应用程序生成新的Ashmem资源信息,则导出新生成的Ashmem资源信息;
检测所述第一安卓应用程序是否生成新的Binder资源信息,如果检测到所述第一安卓应用程序生成新的Binder资源信息,则导出新生成的Binder资源信息;
生成包括所述新生成的基础资源信息、所述新生成的Ashmem资源信息和所述新生成的Binder资源信息的第一安卓应用程序的新增资源信息集合;
将所述第一安卓应用程序的新增资源信息集合发送至所述目的计算节点。
3.一种安卓应用程序迁移的方法,其特征在于,所述方法应用于目的计算节点,所述方法包括:
获取原计算节点发送的第一安卓应用程序的资源集合,其中,所述第一安卓应用程序的资源集合中包括所述第一安卓应用程序的第一基础资源信息、第一Ashmem资源信息和第一Binder资源信息;
基于所述第一基础资源信息,恢复所述第一安卓应用程序的基础资源;
调用Ashmem内核驱动程序,基于所述第一Ashmem资源信息,恢复所述第一安卓应用程序的Ashmem资源;
调用Binder内核驱动程序,基于所述第一Binder资源信息,恢复所述第一安卓应用程序的Binder资源。
4.根据权利要求3所述的方法,其特征在于,所述第一基础资源信息中包括所述第一安卓应用程序的进程信息和文件信息;
所述基于所述第一基础资源信息,恢复所述第一安卓应用程序的基础资源,包括:
基于所述进程信息,创建所述进程信息对应的进程;
基于所述文件信息,在文件系统中创建所述文件信息对应的文件。
5.根据权利要求4所述的方法,其特征在于,所述第一Ashmem资源信息包括所述第一安卓应用程序的多个进程共享的共享内存的目标内存信息和共享文件的目标文件信息,所述目标内存信息包括所述多个目标进程共享的共享内存的属性信息和存储数据,所述文件信息对应的文件包括所述目标文件信息对应的目标共享文件;
所述基于所述第一Ashmem资源信息,恢复所述第一安卓应用程序的Ashmem资源,包括:
基于所述目标内存信息,创建目标共享内存,并基于所述属性信息,配置所述目标共享内存;
将所述存储数据写入所述目标共享内存,并作为所述目标共享文件的文件内容数据。
6.根据权利要求4或5中所述的方法,其特征在于,所述第一Binder资源信息中包括所述第一安卓应用程序的客户端进程和第二安卓应用程序的服务端进程之间的通信连接信息,所述进程信息对应的进程包括所述第一安卓应用程序的客户端进程;
所述基于所述第一Binder资源信息,恢复所述第一安卓应用程序的Binder资源,包括:
基于所述通信连接信息,建立所述客户端进程和所述目的计算节点中所述第二安卓应用程序的服务端进程之间的通信连接。
7.一种安卓应用程序快照恢复的方法,其特征在于,所述方法应用于计算节点,所述方法包括:
接收对第一安卓应用程序的第一时刻的快照恢复指令;
获取存储的所述第一时刻对应的第一安卓应用程序的快照,其中,所述第一安卓应用程序的快照包括所述第一安卓应用程序的第一基础资源信息、第一Ashmem资源信息和第一Binder资源信息;
基于所述第一基础资源信息,恢复所述第一安卓应用程序的基础资源;
调用Ashmem内核驱动程序,基于所述第一Ashmem资源信息,恢复所述第一安卓应用程序的Ashmem资源;
调用Binder内核驱动程序,基于所述第一Binder资源信息,恢复所述第一安卓应用程序的Binder资源。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在所述第一时刻,接收对所述第一安卓应用程序的快照生成指令;
导出所述第一基础资源信息;
调用所述Ashmem内核驱动程序,导出所述第一Ashmem资源信息;
调用所述Binder内核驱动程序,导出所述第一Binder资源信息;
生成包括所述第一基础资源信息、所述第一Ashmem资源信息和所述第一Binder资源信息的所述第一安卓应用程序的快照;
将所述第一安卓应用程序的快照和所述第一时刻对应存储。
9.一种安卓应用程序迁移的装置,其特征在于,所述装置包括:
基础资源管理模块,用于导出第一安卓应用程序的第一基础资源信息;
Ashmem资源管理模块,用于调用第一Ashmem内核驱动程序,导出所述第一安卓应用程序对应的第一Ashmem资源信息;
Binder资源管理模块,用于第一Binder内核驱动程序,导出所述第一安卓应用程序对应的第一Binder资源信息;
生成模块,用于生成包括所述第一基础资源信息、所述第一Ashmem资源信息和所述第一Binder资源信息的所述第一安卓应用程序的资源信息集合;
发送模块,用于将所述第一安卓应用程序的资源信息集合发送至目的计算节点,以使所述目的计算节点基于所述第一基础资源信息,恢复第一安卓应用程序的基础资源,调用第二Ashmem内核驱动程序,基于所述第一Ashmem资源信息,恢复所述第一安卓应用程序的Ashmem资源,调用第二Binder内核驱动程序,基于所述第一Binder资源信息,恢复所述第一安卓应用程序的Binder资源。
10.根据权利要求7所述的装置,其特征在于,所述发送模块,还用于将所述第一安卓应用程序的资源信息集合发送至第一计算节点;
所述基础资源管理模块,还用于检测所述第一安卓应用程序是否生成新的基础资源信息,如果检测到所述第一安卓应用程序生成新的基础资源信息,则导出新生成的基础资源信息;
所述Ashmem资源管理模块,还用于检测所述第一安卓应用程序是否生成新的Ashmem资源信息,如果检测到所述第一安卓应用程序生成新的Ashmem资源信息,则导出新生成的Ashmem资源信息;
所述Binder资源管理模块,还用于检测所述第一安卓应用程序是否生成新的Binder资源信息,如果检测到所述第一安卓应用程序生成新的Binder资源信息,则导出新生成的Binder资源信息;
所述生成模块,还用于生成包括所述新生成的基础资源信息、所述新生成的Ashmem资源信息和所述新生成的Binder资源信息的第一安卓应用程序的新增资源信息集合;
所述发送模块,还用于将所述第一安卓应用程序的新增资源信息集合发送至所述目的计算节点。
11.一种安卓应用程序迁移的装置,其特征在于,所述装置应用于目的计算节点,所述装置包括:
获取模块,用于获取原计算节点发送的第一安卓应用程序的资源集合,其中,所述第一安卓应用程序的资源集合中包括所述第一安卓应用程序的第一基础资源信息、第一Ashmem资源信息和第一Binder资源信息;
基础资源管理模块,用于基于所述第一基础资源信息,恢复所述第一安卓应用程序的基础资源;
Ashmem资源管理模块,用于调用Ashmem内核驱动程序,基于所述第一Ashmem资源信息,恢复所述第一安卓应用程序的Ashmem资源;
Binder资源管理模块,用于调用Binder内核驱动程序,基于所述第一Binder资源信息,恢复所述第一安卓应用程序的Binder资源。
12.根据权利要求11所述的装置,其特征在于,所述第一基础资源信息中包括所述第一安卓应用程序的进程信息和文件信息;
所述基础资源管理模块,用于:
基于所述进程信息,创建所述进程信息对应的进程;
基于所述文件信息,在文件系统中创建所述文件信息对应的文件。
13.根据权利要求12所述的装置,其特征在于,所述第一Ashmem资源信息包括所述第一安卓应用程序的多个进程共享的共享内存的目标内存信息和共享文件的目标文件信息,所述目标内存信息包括所述多个目标进程共享的共享内存的属性信息和存储数据,所述文件信息对应的文件包括所述目标文件信息对应的目标共享文件;
所述Ashmem资源管理模块,用于:
基于所述目标内存信息,创建目标共享内存,并基于所述属性信息,配置所述目标共享内存;
将所述存储数据写入所述目标共享内存,并作为所述目标共享文件的文件内容数据。
14.根据权利要求12或13所述的装置,其特征在于,所述第一Binder资源信息中包括所述第一安卓应用程序的客户端进程和第二安卓应用程序的服务端进程之间的通信连接信息,所述进程信息对应的进程包括所述第一安卓应用程序的客户端进程;
所述Binder资源管理模块,用于:
基于所述通信连接信息,建立所述客户端进程和所述目的计算节点中所述第二安卓应用程序的服务端进程之间的通信连接。
15.一种安卓应用程序快照恢复的装置,其特征在于,所述方法应用于计算节点,所述装置包括:
接收模块,用于接收对第一安卓应用程序的第一时刻的快照恢复指令;
获取模块,用于获取存储的所述第一时刻对应的第一安卓应用程序的快照,其中,所述第一安卓应用程序的快照包括所述第一安卓应用程序的第一基础资源信息、第一Ashmem资源信息和第一Binder资源信息;
基础资源管理模块,用于基于所述第一基础资源信息,恢复所述第一安卓应用程序的基础资源;
Ashmem资源管理模块,用于调用Ashmem内核驱动程序,基于所述第一Ashmem资源信息,恢复所述第一安卓应用程序的Ashmem资源;
Binder资源管理模块,用于调用Binder内核驱动程序,基于所述第一Binder资源信息,恢复所述第一安卓应用程序的Binder资源。
16.根据权利要求15所述的装置,其特征在于,所述接收模块还用于:
在所述第一时刻,接收对所述第一安卓应用程序的快照生成指令;
所述基础资源管理模块,还用于导出所述第一基础资源信息;
所述Ashmem资源管理模块,还用于调用所述Ashmem内核驱动程序,导出所述第一Ashmem资源信息;
所述Binder资源管理模块,还用于调用所述Binder内核驱动程序,导出所述第一Binder资源信息;
所述装置还包括生成模块,用于生成包括所述第一基础资源信息、所述第一Ashmem资源信息和所述第一Binder资源信息的所述第一安卓应用程序的快照;
所述装置还包括存储模块,用于将所述第一安卓应用程序的快照和所述第一时刻对应存储。
17.一种计算节点,其特征在于,所述计算节点包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至权利要求2所述的安卓应用程序迁移的方法所执行的操作,或者实现如权利要求3至权利要求6所述的安卓应用程序迁移的方法所执行的操作,或者实现如权利要求7至权利要求8所述的安卓应用程序快照恢复的方法所执行的操作。
18.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至权利要求2所述的安卓应用程序迁移的方法所执行的操作,或者实现如权利要求3至权利要求6所述的安卓应用程序迁移的方法所执行的操作,或者实现如权利要求7至权利要求8所述的安卓应用程序快照恢复的方法所执行的操作。
CN202010569613.2A 2020-06-20 2020-06-20 安卓应用程序迁移的方法和装置 Pending CN113821333A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010569613.2A CN113821333A (zh) 2020-06-20 2020-06-20 安卓应用程序迁移的方法和装置
PCT/CN2021/098909 WO2021254214A1 (zh) 2020-06-20 2021-06-08 安卓应用程序迁移的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010569613.2A CN113821333A (zh) 2020-06-20 2020-06-20 安卓应用程序迁移的方法和装置

Publications (1)

Publication Number Publication Date
CN113821333A true CN113821333A (zh) 2021-12-21

Family

ID=78924767

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010569613.2A Pending CN113821333A (zh) 2020-06-20 2020-06-20 安卓应用程序迁移的方法和装置

Country Status (2)

Country Link
CN (1) CN113821333A (zh)
WO (1) WO2021254214A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115328529A (zh) * 2022-06-30 2022-11-11 北京亚控科技发展有限公司 应用管理方法及相关设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114025238B (zh) * 2022-01-10 2022-04-05 北京蔚领时代科技有限公司 基于Linux服务器原生安卓应用云端虚拟化方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140137183A1 (en) * 2012-11-13 2014-05-15 Auckland Uniservices Ltd. Security system and method for the android operating system
CN104516753A (zh) * 2013-09-30 2015-04-15 腾讯科技(深圳)有限公司 一种设备应用程序迁移方法和装置
US20160285958A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Application container for live migration of mobile applications
CN108469982A (zh) * 2018-03-12 2018-08-31 华中科技大学 一种容器在线迁移方法
CN109669784A (zh) * 2017-10-13 2019-04-23 华为技术有限公司 一种进程间通信的方法及系统
CN110351336A (zh) * 2019-06-10 2019-10-18 西安交通大学 一种基于docker容器的边缘服务迁移方法
CN110737501A (zh) * 2018-07-18 2020-01-31 中标软件有限公司 Docker容器中检查点和恢复点的功能实现方法及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104239814B (zh) * 2014-09-17 2017-10-20 上海斐讯数据通信技术有限公司 一种移动办公安全方法及系统
CN108052328A (zh) * 2017-11-09 2018-05-18 华中科技大学 一种安卓系统的构建方法及其应用
CN110780889A (zh) * 2019-10-14 2020-02-11 广州微算互联信息技术有限公司 一种云手机数据克隆方法及云手机数据还原方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140137183A1 (en) * 2012-11-13 2014-05-15 Auckland Uniservices Ltd. Security system and method for the android operating system
CN104516753A (zh) * 2013-09-30 2015-04-15 腾讯科技(深圳)有限公司 一种设备应用程序迁移方法和装置
US20160285958A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Application container for live migration of mobile applications
CN109669784A (zh) * 2017-10-13 2019-04-23 华为技术有限公司 一种进程间通信的方法及系统
CN108469982A (zh) * 2018-03-12 2018-08-31 华中科技大学 一种容器在线迁移方法
CN110737501A (zh) * 2018-07-18 2020-01-31 中标软件有限公司 Docker容器中检查点和恢复点的功能实现方法及系统
CN110351336A (zh) * 2019-06-10 2019-10-18 西安交通大学 一种基于docker容器的边缘服务迁移方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115328529A (zh) * 2022-06-30 2022-11-11 北京亚控科技发展有限公司 应用管理方法及相关设备
CN115328529B (zh) * 2022-06-30 2023-08-18 北京亚控科技发展有限公司 应用管理方法及相关设备

Also Published As

Publication number Publication date
WO2021254214A1 (zh) 2021-12-23

Similar Documents

Publication Publication Date Title
US11226847B2 (en) Implementing an application manifest in a node-specific manner using an intent-based orchestrator
CN107431651B (zh) 一种网络服务的生命周期管理方法及设备
CN107832100B (zh) 一种apk插件的加载方法及其终端
US11036535B2 (en) Data storage method and apparatus
US20160261693A1 (en) Cloud-based data backup and operation method and system
CN104756080A (zh) 扩展主机设备的功能
CN111698675B (zh) 数据处理方法、装置及计算机可读存储介质
US20210097476A1 (en) Container Management Method, Apparatus, and Device
US10620871B1 (en) Storage scheme for a distributed storage system
CN108804938B (zh) 一种权限检测方法、装置、电子设备及可读存储介质
CN112463290A (zh) 动态调整计算容器的数量的方法、系统、装置和存储介质
WO2021254214A1 (zh) 安卓应用程序迁移的方法和装置
CN105786606A (zh) 一种用于智能终端间的数据转移的方法和系统
CN108234551B (zh) 一种数据处理方法及装置
CN114328029B (zh) 一种应用资源的备份方法、装置、电子设备及存储介质
CN109710609B (zh) 生成数据表标识的方法及装置
CN114710549A (zh) 一种容器平台中网卡的动态管理方法、系统及业务节点
CN113992657A (zh) 一种基于云平台的共享存储的搭建方法、设备及介质
CN104570967B (zh) 基于Android系统的远程控制方法及系统
WO2018068655A1 (zh) 一种许可管理方法和系统
CN110798358B (zh) 分布式服务标识方法、装置、计算机可读介质及电子设备
CN109522177A (zh) 一种任务日志处理系统、方法以及装置
CN110532457B (zh) 一种获取网络段id方法及系统
CN105144073A (zh) 可移除存储设备身份和配置信息
CN112579877A (zh) 信源系统的控制方法、装置、存储介质和设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination