CN109144692A - 一种用于分配进程的方法、装置及终端 - Google Patents

一种用于分配进程的方法、装置及终端 Download PDF

Info

Publication number
CN109144692A
CN109144692A CN201810778380.XA CN201810778380A CN109144692A CN 109144692 A CN109144692 A CN 109144692A CN 201810778380 A CN201810778380 A CN 201810778380A CN 109144692 A CN109144692 A CN 109144692A
Authority
CN
China
Prior art keywords
pid
obligating
identification
customized
mapping table
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
CN201810778380.XA
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.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology 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 Beijing Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201810778380.XA priority Critical patent/CN109144692A/zh
Publication of CN109144692A publication Critical patent/CN109144692A/zh
Pending legal-status Critical Current

Links

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

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

本发明公开了一种用于分配进程的方法、装置及终端,所述方法包括:在宿主中建立多个预留进程;获取目标插件的待加载组件中多个自定义进程的进程标识;基于进程映射表将所述多个自定义进程的进程标识分别映射至所述多个预留进程中;如此,可以基于进程映射表将待加载组件中的自定义进程映射至在宿主中建立的预留进程中,这样就相当于宿主为待加载组件的分配了进程,进而可以利用预留进程运行待加载组件,实现待加载组件的预定功能。

Description

一种用于分配进程的方法、装置及终端
技术领域
本发明属于系统开发技术领域,尤其涉及一种用于分配进程的方法、装置及终端。
背景技术
在安卓系统中,经常会在宿主或插件A中,需要打开插件B中的自定义组件来实现预定的功能,但是由于该组件只是位于插件B中,并没有安装至系统中的主程序中,因此Android系统不会为该组件分配进程,那么该组件就不会运行,进而导致预定的功能不能实现。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的用于分配进程的方法、装置及终端。
本发明的第一方面,提供了一种用于分配进程的方法,所述方法包括:
在宿主中建立多个预留进程;
获取目标插件的待加载组件中多个自定义进程的进程标识;
基于进程映射表将所述多个自定义进程的进程标识分别映射至所述多个预留进程中。
可选的,所述获取目标插件的待加载组件中多个自定义进程的进程标识,包括:
获取所述目标插件的安装包信息;
基于所述安装包信息获取所述待加载组件的多个自定义进程列表;
基于所述多个自定义进程列表获取所述多个自定义进程的进程标识。
可选的,所述基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中之前,包括:
按照预定的映射规则将所述多个自定义进程的进程标识与所述预留进程进行映射,生成静态进程映射表。
可选的,所述基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中之前,包括:
基于所述多个自定义进程的进程标识及所述多个预留进程的进程标识,利用动态映射算法生成动态进程映射表。
可选的,所述基于进程映射表将所述多个自定义进程的进程标识分别映射至所述多个预留进程中,包括:
根据所述静态进程映射表中的映射规则将所述多个自定义进程的进程标识分别映射至所述多个预留进程中。
可选的,所述基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中,包括:
基于所述动态进程映射表及所述多个预留进程中的进程标识,将所述多个自定义进程的进程标识动态修改为所述多个预留进程中的进程标识。
可选的,所述基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中后,包括:启动所述多个预留进程。
可选的,所述启动所述多个预留进程,包括:
获取每个预留进程对应的内容提供器;
对所述每个预留进程对应的内容提供器进行启动操作,同步唤醒所述每个预留进程。
本发明的第二方面,提供了一种用于分配进程的装置,所述装置包括:
建立单元,用于在宿主中建立多个预留进程;
获取单元,用于获取目标插件的待加载组件中多个自定义进程的进程标识;
映射单元,用于基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中。
可选的,所述获取单元具体用于:
获取所述目标插件的安装包信息;
基于所述安装包信息获取所述待加载组件的多个自定义进程列表;
基于所述多个自定义进程列表获取所述多个自定义进程的进程标识。
可选的,所述装置还包括:生成单元,用于基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中之前,按照预定的映射规则将所述多个自定义进程的进程标识与所述预留进程进行映射,生成静态进程映射表。
可选的,所述生成单元,用于基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中之前,基于所述多个自定义进程的进程标识及所述说个预留进程的进程标识,利用动态映射算法生成动态进程映射表。
可选的,所述映射单元具体用于:
根据所述静态进程映射表中的映射规则将所述多个自定义进程的进程标识分别映射至所述多个预留进程中。
可选的,所述映射单元具体用于:
基于所述动态进程映射表及所述多个预留进程中的进程标识,将所述多个自定义进程的进程标识动态修改为所述多个预留进程中的进程标识。
可选的,所述装置还包括:启动单元,用于基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中后,启动所述多个预留进程。
可选的,所述启动单元包括:
获取子单元,用于获取每个预留进程对应的内容提供器;
启动子单元,用于对所述每个预留进程对应的内容提供器进行启动操作,同步唤醒所述每个预留进程。
本发明的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述的方法。
本发明的第四方面,提供一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一项所述的方法。
本申请实施例中提供的技术方案,至少具有如下技术效果或优点:
本申请实施例提供一种用于分配进程的方法、装置及终端,所述方法包括:在宿主中建立多个预留进程;获取目标插件的待加载组件中多个自定义进程的进程标识;基于进程映射表将所述多个自定义进程的进程标识分别映射至所述多个预留进程中;如此,可以基于进程映射表将待加载组件中的自定义进程映射至在宿主中建立的预留进程中,这样就相当于宿主为待加载组件的分配了进程,进而可以利用预留进程运行待加载组件,实现待加载组件的预定功能。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的用于分配进程的方法流程示意图;
图2示出了根据本发明一个实施例的自定义进程与预留进程的映射结果示意图;
图3示出了根据本发明一个实施例的用于分配进程的装置结构示意图;
图4示出了根据本发明一个实施例的启动单元的结构示意图;
图5示出了根据本发明一个实施例的用于为activity组件分配预留进程及启动预留进程的示意图;
图6示出了根据本发明一个实施例的终端的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种用于分配进程的方法、装置及终端,用以解决现有技术中的宿主或插件中需加载另一个插件中的自定义组件来实现预定的功能时,系统不能为该组件分配进程,进而导致该组件不能运行,不能实现预定功能的技术问题。
为了能更好地理解本申请的技术方案,这里先介绍下本案的应用场景:比如在某个应用程序中需打开另一个插件中的具备直播功能的组件,因这个组件可以实现直播功能,如果将该组件与应用程序放在同一进程中运行,内存消耗较大,因此为了降低内存应用程序消耗,则需要系统重新为该组件分配一个新的进程,新的进程与应用程序所在的进程是相互隔离、互不影响的,这样当组件关闭之后,还可以回收新的进程占据的内存,这样即能避免内存消耗,又实现了该组件的功能。基于此,本申请实施例一提供了一种用于分配进程的方法,详见如下文。
实施例一
本实施例提供一种用于分配进程的方法,如图1所示,所述方法包括:
S110,在宿主中建立多个预留进程;
利用占坑的原理,在宿主中预埋多个可用的预留进程(也称进程坑位)。
比如预留进程包括:p0、p1、p2,那么实现代码如下:
<service android:name=".service.PluginPitServiceP0"//P0 P1 P2三个
android:process=":p0"//
android:exported="false">
S111,获取目标插件的待加载组件中多个自定义进程的进程标识;
在加载目标插件时,获取所述目标插件的PackageInfo信息;具体是利用安装包管理器PackageManager的getPackageArchiveInfo接口,根据传入的目标插件安装包APK的绝对路径,获取到PackageInfo信息,代码实现如下:
PackageInfo packageInfo=PackageManager.getPackageArchiveInfo(path);
获取到PackageInfo信息后,也就意味着获取到了目标插件的待加载组件了,再利用预先建立的数组结构ComponentList将待加载组件列表存储起来。其中,待加载组件可以包括:activity组件、service组件、Content Provider内容提供器和BroadcastReceiver广播接收器这四种组件,组件列表如下:
获取到组件列表后,在加载目标插件时,读取目标插件APK的AndroidMainfext.xml文件中的待加载组件列表的进程“android:process”属性,以获取所述待加载组件的多个自定义进程列表;基于所述多个自定义进程列表获取所述多个自定义进程的进程标识。
S112,基于进程映射表将所述多个自定义进程的进程标识分别映射至所述多个预留进程中。
因宿主是不能识别待加载组件中多个自定义进程的进程标识的,因此需要预先生成进程映射表,再调用插件管理进程,利用插件管理进程中的插件管理器就可以基于进程映射表将多个自定义进程的进程标识分别映射至所述多个预留进程中,这样宿主就可以识别出待加载组件中的自定义进程了。
这里,进程映射表可以包括静态进程映射表及动态进程映射表,在生成静态进程映射表时,在目标插件的APK的AndroidMainfext.xml文件中按照预定的映射规则将多个自定义进程的进程标识与所述预留进程进行映射配置,生成静态进程映射表,代码实现如下:
作为可选的一种实施例,在生成动态映射表时,基于将多个自定义进程的进程标识及所述预留进程的进程标识,利用动态映射算法生成动态进程映射表,代码实现如下:
Map<String,String>processMap
相应地,本实施例在基于进程映射表将所述多个自定义进程的进程标识分别映射至所述多个预留进程中时,首先判断系统中是否存在静态进程映射表,如果存在,则认为是需要进行静态映射,那么会获取静态进程映射表,读取静态进程映射表中的映射规则,基于映射规则调整自定义进程标识,以将所述多个自定义进程的进程标识分别映射至所述多个预留进程中。其中,获取静态进程映射表的代码实现如下:
Bundle metaData=packageInfo.applicationInfo.metaData;
如果不存在静态进程映射表,则认为是需要进行动态映射,那么会基于动态进程映射表及所述多个预留进程中的进程标识,将多个自定义进程的进程标识动态修改为所述多个预留进程中的进程标识。
具体地,在动态映射过程中,若预留进程的数量小于自定义进程的数量,可以通过取模的方法,将自定义进程重复映射至预留进程中,代码实现如下:
int processIndex=自定义进程数量%宿主中预留进程数量
String process=HOST_CONTAINER_PROCESS[processIndex]
上述重复映射的具体实现为:获取自定义进程标识的索引processIndex,根据自定义进程标识的索引processIndex对自定义进程进行动态映射,并将多个自定义进程的进程标识动态修改为所述多个预留进程中的进程标识,实现过程如下:
doAdjust(HashMap<String,String>processMap,activityMap);
doAdjust(HashMap<String,String>processMap,serviceMap);
doAdjust(HashMap<String,String>processMap,providerMap);
doAdjust(HashMap<String,String>processMap,receiverMap);
在修改时,只需修改待加载组件动态进程映射表processMap中的processName字段即可。
比如待加载组件中包括自定义进程:bg0,bg1,bg2,bg3,bg4,bg5,bg6;宿主中的预留进程包括:p0,p1,p2;映射结果可以如图2所示。可以看出,bg0、bg3和bg6动态分配至p0进程;bg1、bg4动态分配至p1进程;bg2、bg5动态分配至p3进程。以bg0为例,进行动态映射后,待加载组件的android:process=”:bg0Process”属性,已经完全被替换成android:process=”:p0”属性。
作为一种可选的实施例,基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中后,包括:启动所述多个预留进程。
具体地,宿主在编译期间,会通过基于Java的虚拟机(JVM,Java VirtualMachine)的构建工具Gradle脚本,在AndroidMainfest.xml中注入与预留进程相同数量的内容提供器provider,比如宿主中的预留进程包括:p0,p1,p2,那么代码实现如下:
三个内容提供器provider包括:ProcessPitProviderP0,ProcessPitProviderP1,ProcessPitProviderP2。
作为可选的一种实施例,在启动多个预留进程,包括:
获取每个预留进程对应的内容提供器;
利用启动函数启动对所述每个预留进程对应的内容提供器进行启动操作,同步唤醒所述每个预留进程。
比如,需要启动预留进程p0,那么需要利用启动函数getContentResolver().insert(ProcessPitProviderP0Uri,values)对ProcessPitProviderP0进行启动,即可唤醒预留进程p0。
作为可选的一种实施例,每个预留进程启动后,同时会启动一个定时任务,在预设的时间内轮巡一次,若检测到预留进程当前没有组件正在运行,则调用自我销毁(自杀)逻辑。其中,预设的时间一般为10~20s。
这里,当确定预留进程中的{
当前持有activities==0
当前持有services==0
当前持有binders==0
}时,则确定预留进程当前没有组件正在运行。其中,binders为进程间通信工具。
但是如上述举例,自定义进程bg0、bg3和bg6都被动态映射至P0预留进程中,若自定义进程bg0运行完毕,主动调用自我销毁逻辑,回收预留进程,那么bg3和bg6也会被意外销毁。为了避免这种情况出现,本实施例设置了计数器,通过读取计数器中的值来判断是否可以销毁掉预留进程。
比如,因P0预留进程中承载了3个自定义进程,那么将计数器的初始值设置为3,int jishuqi=3;若自定义进程bg0运行完毕,调用自我销毁逻辑,销毁P0预留进程,此时设置int jishuqi=2;说明此时不能销毁P0预留进程。直至int jishuqi=0,代表所有的自定义进程均运行完毕,才销毁P0预留进程。
基于相同的发明构思,本申请还提供了一种用于分配进程的装置,具体参见实施例二。
实施例二
本实施例提供一种用于分配进程的装置,如图3所示,装置包括:建立单元301、获取单元302、映射单元303;
建立单元301用于利用占坑的原理,在宿主中建立(预埋)多个可用的预留进程(也称进程坑位)。
比如预留进程包括:p0、p1、p2,那么实现代码如下:
<service android:name=".service.PluginPitServiceP0"//P0P1P2三个
android:process=":p0"//
android:exported="false">
获取单元302用于获取目标插件的待加载组件中多个自定义进程的进程标识;具体实现如下:
在加载目标插件时,获取单元302获取所述目标插件的PackageInfo信息;具体是利用安装包管理器PackageManager的getPackageArchiveInfo接口,根据传入的目标插件安装包APK的绝对路径,获取到PackageInfo信息,代码实现如下:
PackageInfo packageInfo=PackageManager.getPackageArchiveInfo(path);
获取到PackageInfo信息后,也就意味着获取到了目标插件的待加载组件了,再利用预先建立的数组结构将待加载组件列表存储起来。其中,待加载组件可以包括:activity组件、service组件、Content Provider内容提供器和BroadcastReceiver广播接收器这四种组件,组件列表如下:
在加载目标插件时,获取单元302读取目标插件APK的AndroidMainfext.xml文件的待加载组件的“android:process”属性,以获取所述待加载组件的多个自定义进程列表;基于所述多个自定义进程列表获取所述多个自定义进程的进程标识。
获取到自定义进程的进程标识后,映射单元303用于基于进程映射表将所述多个自定义进程的进程标识分别映射至所述多个预留进程中。
这里,参见图3,装置还包括:生成单元304,因宿主是不能识别待加载组件中多个自定义进程的进程标识的,因此生成单元304需要预先生成进程映射表,基于进程映射表将多个自定义进程的进程标识分别映射至所述多个预留进程中,这样宿主就可以识别出待加载组件中的自定义进程了。
这里,进程映射表可以包括静态进程映射表及动态进程映射表,生成单元34在生成静态进程映射表时,在目标插件的APK的AndroidMainfext.xml文件中按照预定的映射规则将多个自定义进程的进程标识与所述预留进程进行映射配置,生成静态进程映射表,代码实现如下:
作为可选的一种实施例,生成单元304在生成动态映射表时,基于将多个自定义进程的进程标识及所述预留进程的进程标识,利用动态映射算法生成动态进程映射表,代码实现如下:
Map<String,String>processMap
相应地,进程映射表生成之后,映射单元303在基于进程映射表将所述多个自定义进程的进程标识分别映射至所述多个预留进程中时,首先判断系统中是否存在静态进程映射表,如果存在,则认为是需要进行静态映射,那么会获取静态进程映射表,读取静态进程映射表中的映射规则,基于映射规则调整自定义进程标识,以将所述多个自定义进程的进程标识分别映射至所述多个预留进程中。其中,获取静态进程映射表的代码实现如下:
Bundle metaData=packageInfo.applicationInfo.metaData;
如果不存在静态进程映射表,则认为是需要进行动态映射,那么基于动态进程映射表及所述多个预留进程中的进程标识,将多个自定义进程的进程标识动态修改为所述多个预留进程中的进程标识。
具体地,在动态映射过程中,若预留进程的数量小于自定义进程的数量,映射单元303可以通过取模的方法,将自定义进程重复映射至预留进程中,代码实现如下:
int processIndex=自定义进程数量%宿主中预留进程数量
String process=HOST_CONTAINER_PROCESS[processIndex]
上述重复映射的具体实现为:获取自定义进程标识的索引processIndex,根据自定义进程标识的索引processIndex对自定义进程进行动态映射,并将多个自定义进程的进程标识动态修改为所述多个预留进程中的进程标识,实现过程如下:
doAdjust(HashMap<String,String>processMap,activityMap);
doAdjust(HashMap<String,String>processMap,serviceMap);
doAdjust(HashMap<String,String>processMap,providerMap);
doAdjust(HashMap<String,String>processMap,receiverMap);
在修改时,只需修改待加载组件动态进程映射表processMap中的processName字段即可。
比如待加载组件中包括自定义进程:bg0,bg1,bg2,bg3,bg4,bg5,bg6;宿主中的预留进程包括:p0,p1,p2;映射结果可以如图2所示。可以看出,bg0、bg3和bg6分配至p0进程;bg1、bg4分配至p1进程;bg2、bg5分配至p3进程。以bg0为例,进行动态映射后,待加载组件的android:process=”:bg0Process”属性,已经完全被替换成android:process=”:p0”属性。
作为一种可选的实施例,装置还包括:启动单元305,用于基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中后,启动所述多个预留进程。
具体地,宿主在编译期间,会通过Gradle脚本,在AndroidMainfest.xml中注入与预留进程相同数量的内容提供器provider,比如宿主中的预留进程包括:p0,p1,p2,那么代码实现如下:
三个内容提供器provider包括:ProcessPitProviderP0,ProcessPitProviderP1,ProcessPitProviderP2。
作为可选的一种实施例,参见图4,启动单元305包括:获取子单元41及启动子单元42;
获取子单元41用于获取每个预留进程对应的内容提供器;
启动子单元42用于利用启动函数启动对所述每个预留进程对应的内容提供器进行启动操作,同步唤醒所述每个预留进程。
比如,需要启动预留进程p0,那么启动子单元42需要利用启动函数getContentResolver().insert(ProcessPitProviderP0Uri,values)对ProcessPitProviderP0进行启动,即可唤醒预留进程p0。
作为可选的一种实施例,启动单元35在启动每个预留进程后,同时会启动一个定时任务,在预设的时间内轮巡一次,若检测到预留进程当前没有组件运行,则调用自我销毁(自杀)逻辑。其中,预设的时间一般为10~20s。
这里,当确定预留进程中的{
当前持有activities==0
当前持有services==0
当前持有binders==0
}时,则确定预留进程当前没有组件正在运行。其中,binders为进程间通信工具。
但是如上述举例,自定义进程bg0、bg3和bg6都被动态映射至P0预留进程中,若自定义进程bg0运行完毕,主动调用自我销毁逻辑,回收预留进程,那么bg3和bg6也会被意外销毁。为了避免这种情况出现,本实施例设置了计数器,启动单元35可通过读取计数器中的值判断是否可以销毁掉预留进程。
比如,因P0预留进程中承载了3个自定义进程,那么将计数器的初始值设置为3,int jishuqi=3;若自定义进程bg0运行完毕,调用自我销毁逻辑,销毁P0预留进程,此时设置int jishuqi=2;说明此时不能销毁P0预留进程。直至int jishuqi=0,代表所有的自定义进程均运行完毕,才销毁P0预留进程。
实施例三
实际应用中,本实施例以activity组件为例来详细说明为activity组件分配进程并启动的过程,详见图5。可以看出图5中包括7个步骤:
步骤1,在宿主中或某个插件中,通过RePlugin.startActivity()启动另一插件中的Activity时,会先调用插件管理进程。
步骤2,在插件管理进程中,插件管理器会为该Activity分配一个预留进程(参考上述实施例一介绍的进程分配过程,在此不再赘述)。
步骤3,然后,同步的启动该预留进程(参考上述实施例一介绍的预留进程启动过程,在此不再赘述)。
步骤4,启动预留进程后,在插件管理进程中,通过Binder调用预留进程留在插件管理进程中的进程代理,在预留进程中为该Activity动态分配坑位。这里,每个预留进程中可能包括多个Activity坑位,每个预留进程独立管理自己的Activity坑位信息,此时该坑位Activity还没有被Activity服务管理器(AMS,Activity Manager Service)打开。
步骤5,把在预留进程中分配好的Activity坑位信息返回给步骤1中的调用者(宿主或插件)。
步骤6,调用者获取到Activity坑位信息后,会把这个Activity坑位信息(带着自定义进程标识)传送至AMS,由于AMS去启动Activity。
步骤7,此时AMS启动的Activity实际是一个在主程序中并不存在的Activity坑位,但是由于宿主的类加载器ClassLoader已经在进程启动之初被hook了,当类加载器去加载类loadClass时,如果确定当前正在被加载的Class是一个Activity坑位信息,会自动分发给指定插件的ClassLoader去加载,从而绕过AMS和ClassLoader打开一个并未在主程序中安装的Activity。
本申请实施例中提供的技术方案,至少具有如下技术效果或优点:
本申请实施例提供一种用于分配进程的方法、装置及计算机设备,所述方法包括:在宿主中建立多个预留进程;获取目标插件的待加载组件中多个自定义进程的进程标识;基于进程映射表将所述多个自定义进程的进程标识分别映射至所述多个预留进程中;如此,可以基于进程映射表将待加载组件中的自定义进程映射至在宿主中建立的预留进程中,这样就相当于宿主为待加载组件的分配了进程,进而可以利用预留进程运行待加载组件,实现待加载组件的预定功能。
本发明同时还提供了一种移动终端,如图6所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端可以为包括手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point ofSales,销售终端)、车载电脑等任意终端设备,以终端为手机为例:
图6示出的是与本发明实施例提供的终端相关的手机的部分结构的框图。参考图6,手机包括:射频(Radio Frequency,RF)电路31、存储器132、输入单元33、显示单元34、传感器35、音频电路36、无线保真(wireless-fidelity,Wi-Fi)模块37、处理器38、以及电源39等部件。本领域技术人员可以理解,图6中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图6对手机的各个构成部件进行具体的介绍:
RF电路31可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器38处理;另外,将设计上行的数据发送给基站。通常,RF电路31包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,LNA)、双工器等。此外,RF电路31还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System ofMobile communication,GSM)、通用分组无线服务(General Packet Radio Service,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband CodeDivision Multiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、电子邮件、短消息服务(Short Messaging Service,SMS)等。
存储器32可用于存储软件程序以及模块,处理器38通过运行存储在存储器32的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器32可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器32可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元33可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元33可包括触控面板331以及其他输入设备332。触控面板331,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板331上或在触控面板331附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板331可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器38,并能接收处理器38发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板331。除了触控面板331,输入单元33还可以包括其他输入设备332。具体地,其他输入设备332可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元34可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元34可包括显示面板341,可选的,可以采用液晶显示器(Liquid CrystalDisplay,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板341。进一步的,触控面板331可覆盖显示面板341,当触控面板331检测到在其上或附近的触摸操作后,传送给处理器38以确定触摸事件的类型,随后处理器38根据触摸事件的类型在显示面板341上提供相应的视觉输出。虽然在图6中,触控面板331与显示面板341是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板331与显示面板341集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器35,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板341的亮度,接近传感器可在手机移动到耳边时,关闭显示面板341和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路36、扬声器361,传声器362可提供用户与手机之间的音频接口。音频电路36可将接收到的音频数据转换后的电信号,传输到扬声器361,由扬声器361转换为声音信号输出;另一方面,传声器362将收集的声音信号转换为电信号,由音频电路360接收后转换为音频数据,再将音频数据输出处理器38处理后,经RF电路31以发送给比如另一手机,或者将音频数据输出至存储器32以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块37可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图6示出了WiFi模块37,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器38是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器32内的软件程序和/或模块,以及调用存储在存储器32内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器38可包括一个或多个处理单元;优选的,处理器38可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器38中。
手机还包括给各个部件供电的电源39(比如电池),优选的,电源可以通过电源管理系统与处理器38逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本发明实施例中,该终端所包括的处理器38还具有以下功能:获取目标进程对应的链接程序默认的命名空间,所述链接程序用于加载、链接动态链接库libc.so库中的所有函数,所述libc.so库中包括有待注入的目标功能函数;获取所述命名空间的地址;根据所述命名空间的地址查找所述命名空间的属性参数,将所述属性参数的属性值设置为预设的属性值,以能使得操作系统允许进行跨进程注入的操作;将所述目标功能函数注入所述目标进程中。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的网关、代理服务器、系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了,A1、一种用于分配进程的方法,所述方法包括:
在宿主中建立多个预留进程;
获取目标插件的待加载组件中多个自定义进程的进程标识;
基于进程映射表将所述多个自定义进程的进程标识分别映射至所述多个预留进程中。
A2、如A1所述的方法,所述获取目标插件的待加载组件中多个自定义进程的进程标识,包括:
获取所述目标插件的安装包信息;
基于所述安装包信息获取所述待加载组件的多个自定义进程列表;
基于所述多个自定义进程列表获取所述多个自定义进程的进程标识。
A3、如A1所述的方法,所述基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中之前,包括:
按照预定的映射规则将所述多个自定义进程的进程标识与所述预留进程进行映射,生成静态进程映射表。
A4、如A1-A3任一项所述的方法,所述基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中之前,包括:
基于所述多个自定义进程的进程标识及所述多个预留进程的进程标识,利用动态映射算法生成动态进程映射表。
A5、如A3所述的方法,所述基于进程映射表将所述多个自定义进程的进程标识分别映射至所述多个预留进程中,包括:
根据所述静态进程映射表中的映射规则将所述多个自定义进程的进程标识分别映射至所述多个预留进程中。
A6、如A4所述的方法,所述基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中,包括:
基于所述动态进程映射表及所述多个预留进程中的进程标识,将所述多个自定义进程的进程标识动态修改为所述多个预留进程中的进程标识。
A7、如A1所述的方法,所述基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中后,包括:启动所述多个预留进程。
A8、如A7所述的方法,所述启动所述多个预留进程,包括:
获取每个预留进程对应的内容提供器;
对所述每个预留进程对应的内容提供器进行启动操作,同步唤醒所述每个预留进程。
B9、一种用于分配进程的装置,所述装置包括:
建立单元,用于在宿主中建立多个预留进程;
获取单元,用于获取目标插件的待加载组件中多个自定义进程的进程标识;
映射单元,用于基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中。
B10、如B9所述的装置,所述获取单元具体用于:
获取所述目标插件的安装包信息;
基于所述安装包信息获取所述待加载组件的多个自定义进程列表;
基于所述多个自定义进程列表获取所述多个自定义进程的进程标识。
B11、如B9所述的装置,所述装置还包括:生成单元,用于基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中之前,按照预定的映射规则将所述多个自定义进程的进程标识与所述预留进程进行映射,生成静态进程映射表。
B12、如B9-B11任一项所述的装置,所述生成单元,用于基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中之前,基于所述多个自定义进程的进程标识及所述说个预留进程的进程标识,利用动态映射算法生成动态进程映射表。
B13、如B11所述的装置,所述映射单元具体用于:
根据所述静态进程映射表中的映射规则将所述多个自定义进程的进程标识分别映射至所述多个预留进程中。
B14、如B12所述的装置,所述映射单元具体用于:
基于所述动态进程映射表及所述多个预留进程中的进程标识,将所述多个自定义进程的进程标识动态修改为所述多个预留进程中的进程标识。
B15、如B9所述的装置,所述装置还包括:启动单元,用于基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中后,启动所述多个预留进程。
B16、如B15所述的装置,所述启动单元包括:
获取子单元,用于获取每个预留进程对应的内容提供器;
启动子单元,用于对所述每个预留进程对应的内容提供器进行启动操作,同步唤醒所述每个预留进程。
B17、一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现A1至A8任一项所述的方法。
B18、一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现A1至A8任一项所述的方法。

Claims (10)

1.一种用于分配进程的方法,其特征在于,所述方法包括:
在宿主中建立多个预留进程;
获取目标插件的待加载组件中多个自定义进程的进程标识;
基于进程映射表将所述多个自定义进程的进程标识分别映射至所述多个预留进程中。
2.如权利要求1所述的方法,其特征在于,所述获取目标插件的待加载组件中多个自定义进程的进程标识,包括:
获取所述目标插件的安装包信息;
基于所述安装包信息获取所述待加载组件的多个自定义进程列表;
基于所述多个自定义进程列表获取所述多个自定义进程的进程标识。
3.如权利要求1所述的方法,其特征在于,所述基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中之前,包括:
按照预定的映射规则将所述多个自定义进程的进程标识与所述预留进程进行映射,生成静态进程映射表。
4.如权利要求1-3任一项所述的方法,其特征在于,所述基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中之前,包括:
基于所述多个自定义进程的进程标识及所述多个预留进程的进程标识,利用动态映射算法生成动态进程映射表。
5.一种用于分配进程的装置,其特征在于,所述装置包括:
建立单元,用于在宿主中建立多个预留进程;
获取单元,用于获取目标插件的待加载组件中多个自定义进程的进程标识;
映射单元,用于基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中。
6.如权利要求5所述的装置,其特征在于,所述获取单元具体用于:
获取所述目标插件的安装包信息;
基于所述安装包信息获取所述待加载组件的多个自定义进程列表;
基于所述多个自定义进程列表获取所述多个自定义进程的进程标识。
7.如权利要求5所述的装置,其特征在于,所述装置还包括:生成单元,用于基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中之前,按照预定的映射规则将所述多个自定义进程的进程标识与所述预留进程进行映射,生成静态进程映射表。
8.如权利要求5-7任一项所述的装置,其特征在于,所述生成单元,用于基于进程映射表将所述多个自定义进程的进程标识映射分别至所述多个预留进程中之前,基于所述多个自定义进程的进程标识及所述说个预留进程的进程标识,利用动态映射算法生成动态进程映射表。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至4任一项所述的方法。
10.一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至4任一项所述的方法。
CN201810778380.XA 2018-07-16 2018-07-16 一种用于分配进程的方法、装置及终端 Pending CN109144692A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810778380.XA CN109144692A (zh) 2018-07-16 2018-07-16 一种用于分配进程的方法、装置及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810778380.XA CN109144692A (zh) 2018-07-16 2018-07-16 一种用于分配进程的方法、装置及终端

Publications (1)

Publication Number Publication Date
CN109144692A true CN109144692A (zh) 2019-01-04

Family

ID=64800579

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810778380.XA Pending CN109144692A (zh) 2018-07-16 2018-07-16 一种用于分配进程的方法、装置及终端

Country Status (1)

Country Link
CN (1) CN109144692A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110442467A (zh) * 2019-06-20 2019-11-12 Oppo广东移动通信有限公司 一种数据共享方法及终端、计算机可读存储介质
CN112579191A (zh) * 2019-09-29 2021-03-30 华为终端有限公司 一种组件加载方法、装置及系统

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060123417A1 (en) * 2004-12-06 2006-06-08 Microsoft Corporation Operating-system process construction
US20150095917A1 (en) * 2013-09-27 2015-04-02 International Business Machines Corporation Distributed uima cluster computing (ducc) facility
CN104699536A (zh) * 2015-03-18 2015-06-10 北京奇虎科技有限公司 活动组件进程空间分配方法及其相应的装置
CN104750555A (zh) * 2015-03-31 2015-07-01 北京奇虎科技有限公司 一种Android程序中的进程管理方法和装置
CN104750528B (zh) * 2015-03-31 2016-08-24 北京奇虎科技有限公司 一种Android程序中的组件管理方法和装置
CN106775952A (zh) * 2016-12-29 2017-05-31 北京奇虎科技有限公司 一种安卓应用的进程管理方法和装置
CN104699537B (zh) * 2015-03-18 2017-05-31 北京奇虎科技有限公司 程序控制方法与活动组件调度方法及其相应的装置
CN107239297A (zh) * 2017-04-21 2017-10-10 北京奇虎科技有限公司 一种插件的多进程管理方法和装置
CN108038370A (zh) * 2017-12-28 2018-05-15 北京奇虎科技有限公司 沙箱活动组件进程空间分配方法、分配装置和分配终端
CN108170489A (zh) * 2016-12-07 2018-06-15 腾讯科技(深圳)有限公司 一种快速加载资源的方法及装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060123417A1 (en) * 2004-12-06 2006-06-08 Microsoft Corporation Operating-system process construction
US20150095917A1 (en) * 2013-09-27 2015-04-02 International Business Machines Corporation Distributed uima cluster computing (ducc) facility
CN104699536A (zh) * 2015-03-18 2015-06-10 北京奇虎科技有限公司 活动组件进程空间分配方法及其相应的装置
CN104699537B (zh) * 2015-03-18 2017-05-31 北京奇虎科技有限公司 程序控制方法与活动组件调度方法及其相应的装置
CN104750555A (zh) * 2015-03-31 2015-07-01 北京奇虎科技有限公司 一种Android程序中的进程管理方法和装置
CN104750528B (zh) * 2015-03-31 2016-08-24 北京奇虎科技有限公司 一种Android程序中的组件管理方法和装置
CN108170489A (zh) * 2016-12-07 2018-06-15 腾讯科技(深圳)有限公司 一种快速加载资源的方法及装置
CN106775952A (zh) * 2016-12-29 2017-05-31 北京奇虎科技有限公司 一种安卓应用的进程管理方法和装置
CN107239297A (zh) * 2017-04-21 2017-10-10 北京奇虎科技有限公司 一种插件的多进程管理方法和装置
CN108038370A (zh) * 2017-12-28 2018-05-15 北京奇虎科技有限公司 沙箱活动组件进程空间分配方法、分配装置和分配终端

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110442467A (zh) * 2019-06-20 2019-11-12 Oppo广东移动通信有限公司 一种数据共享方法及终端、计算机可读存储介质
CN110442467B (zh) * 2019-06-20 2023-02-03 Oppo广东移动通信有限公司 一种数据共享方法及终端、计算机可读存储介质
CN112579191A (zh) * 2019-09-29 2021-03-30 华为终端有限公司 一种组件加载方法、装置及系统
WO2021057411A1 (zh) * 2019-09-29 2021-04-01 华为技术有限公司 一种组件加载方法、装置及系统

Similar Documents

Publication Publication Date Title
CN103473092B (zh) 一种下载应用的处理方法、装置及终端设备
CN104618217B (zh) 分享资源的方法、终端、服务器及系统
CN104102500B (zh) 一种应用程序的进程启动方法及计算机系统
CN109933381B (zh) 一种内核的加载方法及装置
CN108920220B (zh) 一种函数调用的方法、装置及终端
CN106547844B (zh) 一种用户界面的处理方法和装置
CN104965722B (zh) 一种显示信息的方法及装置
CN104424211B (zh) 一种基于微博的业务数据的发布方法、装置和系统
CN108595218A (zh) 一种加载系统动态库的方法和装置
CN107622200A (zh) 应用程序的安全性检测方法及装置
CN110046497A (zh) 一种函数挂钩实现方法、装置和存储介质
CN106919458B (zh) Hook目标内核函数的方法及装置
CN107071180A (zh) 桌面定制布局方法、移动终端及计算机可读存储介质
CN112130866A (zh) 一种应用部署方法和相关装置
CN108897533A (zh) 一种函数调用的方法、装置及终端
CN110196795A (zh) 检测移动终端应用运行状态的方法及相关装置
CN110058850A (zh) 一种应用的开发方法、装置以及存储介质
CN106713608A (zh) 应用的功能状态修改方法、装置及终端
CN106789866B (zh) 一种检测恶意网址的方法及装置
CN108549826A (zh) 应用程序的校验方法、终端、服务器及可读存储介质
CN109002547A (zh) 日志文件存储方法、移动终端及计算机可读存储介质
CN106713636B (zh) 图片数据的加载方法、装置及移动终端
CN106708501B (zh) 活动监控方法及装置
CN110489679A (zh) 一种浏览器内核的处理方法、装置及存储介质
CN106681884B (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190104