CN111061484A - 代码编译方法、装置、服务器、用户终端及可读介质 - Google Patents

代码编译方法、装置、服务器、用户终端及可读介质 Download PDF

Info

Publication number
CN111061484A
CN111061484A CN201911193582.9A CN201911193582A CN111061484A CN 111061484 A CN111061484 A CN 111061484A CN 201911193582 A CN201911193582 A CN 201911193582A CN 111061484 A CN111061484 A CN 111061484A
Authority
CN
China
Prior art keywords
user
code
configuration file
application program
identifier
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.)
Granted
Application number
CN201911193582.9A
Other languages
English (en)
Other versions
CN111061484B (zh
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.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp 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 Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN201911193582.9A priority Critical patent/CN111061484B/zh
Publication of CN111061484A publication Critical patent/CN111061484A/zh
Application granted granted Critical
Publication of CN111061484B publication Critical patent/CN111061484B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

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

Abstract

本申请公开了一种代码编译方法、装置、服务器、用户终端及可读介质,涉及计算机技术领域,方法包括:获取指定应用程序的下载请求,所述下载请求包括所述指定应用程序的应用标识和所述用户终端对应的用户标识;确定所述用户标识对应的目标用户类别;根据所述目标用户类别,在所述应用标识对应的多个配置文件中确定目标配置文件,所述配置文件用于记录所述指定应用程序的热点代码标识;将所述目标配置文件发送至用户终端,以指示所述用户终端根据所述目标配置文件对所述指定应用程序的热点代码预编译。因此,所确定的配置文件与用户类别相对应,能够避免为所有用户发送相同的配置文件,提高了为用户推送配置文件的多样性。

Description

代码编译方法、装置、服务器、用户终端及可读介质
技术领域
本申请涉及计算机技术领域,更具体地,涉及一种代码编译方法、装置、服务器、用户终端及可读介质。
背景技术
目前,电子设备可以在服务器下载应用程序的时候,同时下载该应用程序的热点代码文件,以便在安装该应用程序的时候,根据热点代码文件对应用程序内的热点代码预编译以提升应用程序的运行效率,但是,目前服务器为所有用户推送的热点代码文件一致,无法满足用户的多样化需求。
发明内容
本申请提出了一种代码编译方法、装置、服务器、用户终端及可读介质,以改善上述缺陷。
第一方面,本申请实施例提供了一种代码编译方法,应用于服务器,所述方法包括:获取指定应用程序的下载请求,所述下载请求包括所述指定应用程序的应用标识和所述用户终端对应的用户标识;确定所述用户标识对应的目标用户类别;根据所述目标用户类别,在所述应用标识对应的多个配置文件中确定目标配置文件,所述配置文件用于记录所述指定应用程序的热点代码标识;将所述目标配置文件发送至用户终端,以指示所述用户终端根据所述目标配置文件对所述指定应用程序的热点代码预编译。
第二方面,本申请实施例还提供了一种代码编译方法,应用于用户终端,所述方法包括:发送下载请求至服务器,所述下载请求包括指定应用程序的应用标识和所述用户终端对应的用户标识;获取所述服务器发送的目标配置文件,所述目标配置文件为所述服务器根据所述用户标识对应的目标用户类别在所述应用标识对应的多个配置文件中确定的;根据所述目标配置文件对所述指定应用程序的热点代码预编译。
第三方面,本申请实施例还提供了一种代码编译装置,应用于服务器,所述装置包括:获取单元、确定单元、配置单元和编译单元。获取单元,用于获取指定应用程序的下载请求,所述下载请求包括所述指定应用程序的应用标识和所述用户终端对应的用户标识。确定单元,用于确定所述用户标识对应的目标用户类别。配置单元,用于根据所述目标用户类别,在所述应用标识对应的多个配置文件中确定目标配置文件,所述配置文件用于记录所述指定应用程序的热点代码标识。编译单元,用于将所述目标配置文件发送至用户终端,以指示所述用户终端根据所述目标配置文件对所述指定应用程序的热点代码预编译。
第四方面,本申请实施例还提供了一种代码编译装置,应用于用户终端,所述装置包括:发送单元、接收单元和编译单元。发送单元,用于发送下载请求至服务器,所述下载请求包括指定应用程序的应用标识和所述用户终端对应的用户标识。接收单元,用于获取所述服务器发送的目标配置文件,所述目标配置文件为所述服务器根据所述用户标识对应的目标用户类别在所述应用标识对应的多个配置文件中确定的。编译单元,用于根据所述目标配置文件对所述指定应用程序的热点代码预编译。
第五方面,本申请实施例还提供了一种服务器,包括:一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述方法。
第六方面,本申请实施例还提供了一种用户终端,包括:一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述方法。
第七方面,本申请实施例还提供了一种计算机可读介质,所述可读存储介质存储有处理器可执行的程序代码,所述程序代码被所述处理器执行时使所述处理器执行上述方法。
本申请提供的代码编译方法、装置、服务器、用户终端及可读介质,服务器获取下载请求,解析该下载请求以获得用户终端对应的用户标识和指定应用程序的应用标识,在应用标识对应的多个配置文件中确定目标用户类别对应的配置文件,作为目标配置文件并将该目标配置文件发送至用户终端,因此,所确定的配置文件与用户类别相对应,能够避免为所有用户发送相同的配置文件,提高了为用户推送配置文件的多样性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一实施例提供的代码编译***的示意图;
图2示出了本申请另一实施例提供的代码编译***的示意图;
图3示出了本申请一实施例提供过的代码编译方法的方法流程图;
图4示出了本申请另一实施例提供过的代码编译方法的方法流程图;
图5示出了图4中的S450的方法流程图;
图6示出了本申请又一实施例提供过的代码编译方法的方法流程图;
图7示出了本申请再一实施例提供过的代码编译方法的方法流程图;
图8示出了图7中的S750的方法流程图;
图9示出了本申请一实施例提供的代码编译装置的模块框图;
图10示出了本申请另一实施例提供的代码编译装置的模块框图;
图11示出了本申请又一实施例提供的代码编译装置的模块框图;
图12示出了本申请再一实施例提供的代码编译装置的模块框图;
图13示出了本申请实施例提供的电子设备的模块框图;
图14出了本申请实施例提供的用于保存或者携带实现根据本申请实施例的代码编译方法的程序代码的存储单元。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
Android有两种虚拟机执行环境:Dalvik和Art。在Dalvik虚拟机下,应用每次运行的时候,字节码都需要通过即时编译器(JIT)转换为机器码,才能被机器运行,这会拖慢应用的执行效率。在Android4.4时,Art虚拟机开始替代Dalvik,在最开始的Art虚拟机中,应用在第一次安装的时候,***会通过一个名称为dex2oat的工具将APK中的dex文件编译成包含本地机器码的oat文件存放下来。这样做之后,在程序执行的时候,就可以直接使用已经编译好的机器码以加快效率,这种预先编译机器码的机制叫做AOT。AOT的缺点是应用安装和***升级之后的应用优化过程比较耗时(需要重新将dex字节码编译成本地机器码),且优化后的文件会占用额外的存储空间。
Android平台的绝大多数应用是使用Java语言写的,Java程序最初仅仅通过JAVA解释器(Interpreter)解释执行,即对字节码逐条解释执行,这种方式的执行速度相对会比较慢,尤其当某个方法或代码块运行特别频繁时,这种方式的执行效率就显得很低。于是后来在虚拟机中引入了JIT编译器,当虚拟机发现某个方法或者代码块运行特别频繁时,就会把这些代码认定为“hot spot code”(热点代码),将之记录下来保存到profile文件,为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,而正是由JIT编译器负责这项任务。
简单而言,profile文件记录了应用频繁运行的方法或者代码块,经由JIT或者AOT编译后得到.odex/.oat文件,该文件存有这些热点代码编译而成的二进制机器码,可直接交由底层cpu执行,从而提高了运行速度。
目前大部分手机厂商都是采用的ART+Interpreter+JIT+AOT混合编译模式。过程如下:
1)应用在安装的时候dex不会再被编译;
2)App运行时,dex文件先通过解析器被直接执行,经常运行函数或代码块会被识别为hot code并被JIT编译后存储在jit code cache中并生成profile文件以记录热点函数的信息;
3)手机进入IDLE(空闲)且Charging(充电)状态的时候,***会扫描App目录下的profile文件并执行AOT过程进行编译;
其中,每个app的profile文件都在/data/misc/profiles/目录下:/data/misc/profiles/cur/0/package-name/primary.prof。
该模式下,不会影响应用的安装速度和OAT升级的速度,而应用的性能在刚开始时没有多少提高,但是随着用户运行的次数越多,编译的热点代码越多,因此性能会越来越好。
另外,在Android Pie中,谷歌基于Interpreter+JIT+AOT的混合模式,在GooglePlay推出了一项新的功能,通过在Play Cloud中配置应用的热点代码,当用户在GooglePlay下载应用时,会在云端同时分发应用的热点profile文件到用户手机,在安装应用过程中,调用dex2oat对热点代码进行编译,从而提升应用安装后的性能。
发明人在研究中发现,Interpreter+JIT+AOT混合编译技术,在应用安装的过程中,软件商店不会推送热点代码文件,因此应用在安装时没有经过编译,首次启动的速度没有得到任何优化。热点代码文件的生成依赖于用户使用应用,通过Interpreter解释代码,次数达到阈值后,才会被识别为热点代码,而且热点代码的编译依赖于设备在空闲维护模式下才会被触发,这意味着用户可能需要几天时间才能看到性能的提升。
为了克服Interpreter+JIT+AOT混合编译技术的缺点,谷歌提出了一种热点信息推送方案,具体地,谷歌商店从用户手机端收集应用的热点代码文件profile,上传到PlayCloud,然后对应用的热点代码做整合后生成一份通用的热点代码文件。在用户从应用商店下载应用时,同时将该profile文件推送给用户,在安装过程中进行编译。从而使用户在安装完应用后的瞬间,即能体验到应用性能得到提升后的体验。但是由于profile文件的编译是耗时操作,所以这会大大增加应用的安装时长。
并且,谷歌的热点信息推送方案是针对每个应用都生成一个通用的profile热点代码文件,推送给所有下载该应用的用户。由于profile文件存储的是应用中的函数、功能索引,profile中包含的函数和功能会得到预先编译,因此用户使用到这些功能的时候会有速度的提升。但是不同的用户即使在使用相同应用时,他们关注的应用的功能也是不一样的,以某个即使通信软件为例,有的用户会经常使用软件的视频聊天功能,而有的用户可能就不会用或者少用该功能,而经常使用该软件中的城市服务功能等等。也就是说,对于不同的用户,在使用相同应用时,所产生的热点代码实际上是不一样的。因此谷歌针对所有用户推送一份通用的profile,效果不佳。
为了克服上述缺陷,本申请实施例提供了一种代码编译方法和装置以改善上述缺陷。下面,对本申请实施例的应用场景做一个介绍。
如图1所示,本申请一实施例提供了一种代码编译***,该***包括用户终端100和业务服务器200,用户终端100和业务服务器200位于无线网络或有线网络中,用户终端100和业务服务器200之间能够进行数据交互。
用户能够使用用户帐号登录用户终端100,用户针对该用户终端100的操作数据以及用户帐号的数据均能够存储在业务服务器200内。其中,业务服务器200可以是单独的服务器,也可以是服务器集群,可以是本地服务器,也可以是云端服务器。
于本申请实施例中,用户终端100能够由业务服务器200下载应用程序,并且将应用程序安装在用户终端100内。则该业务服务器200可以是应用商店对应的服务器。
用户在使用用户终端100操作所安装的应用程序的时候,对该应用程序的操作数据能够被业务服务器200手机,具体地,该操作数据包括用户使用应用程序时所产生的热点代码信息,则用户终端100能够将应用程序的热点代码信息以profile文件的形式发送至业务服务器200存储,则业务服务器200将该profile文件与该应用程序的应用标识对应存储,以便记录该应用程序的profile文件。作为一种实施方式,该profile文件同时与应用程序的应用标识以及用户帐号对应存储,以便服务器能够记录用户帐号对应的用户在操作应用标识对应的应用程序时所产生的profile文件。
另外,用户终端可以是多个,且可以由不同的用户帐号登录,每个用户帐号所对应的profile文件均能够对被业务服务器200收集并存储,因此,服务器能够收集不同的用户终端上传的针对不同的应用程序的不同的profile文件,服务器能够将同一个应用程序对应的不同的profile文件整理成一个通用的profile文件,作为与该应用程序对应的profile文件。从而,在新的用户由服务器下载该应用程序的时候,服务器能够将该应用程序的安装文件和profile文件一起发送至用户终端,用户终端在安装该应用程序的时候,在安装应用过程中,调用dex2oat对热点代码进行编译,从而提升应用安装后的性能。
上述图1所示的代码编译***中,业务服务器200提供应用程序的安装文件以及profile文件,并且能够收集各个用户终端上传的应用程序的profile文件并整理,而作为另一种实施方式,应用程序的安装文件和应用程序的profile文件可以分开存储在不同的服务器内。具体地,如图2所示,本申请另一实施例提供了一种代码编译***,该***包括用户终端100、数据服务器300和云端服务器400,用户终端100、数据服务器300和云端服务器400位于无线网络或有线网络中,用户终端100、数据服务器300和云端服务器400之间能够进行数据交互。
数据服务器300用于基于用户终端100的应用安装请求将应用程序的安装包发送至用户终端,并且收集用户终端上传的profile文件,并且将profile文件上传至云端400,云端400将某个应用程序的profile文件整合后生成一份通用的profile文件。则在数据服务器300获取到用户终端100发送的应用安装请求的时候,根据该应用程序的标识由云端400获取对应的profile文件并且将应用程序的安装文件发送至用户终端。
则上述图1中的业务服务器200可以看作是一个服务器集群,具体可以包括图2中的数据服务器300和云端服务器400。
请参阅图3,本申请实施例提供了一种代码编译方法,应用于服务器,该服务器可以是上述业务服务器200,还可以是上述的云端服务器400。具体地,该方法包括:S301至S304。
S301:获取指定应用程序的下载请求,所述下载请求包括所述指定应用程序的应用标识和用户终端对应的用户标识。
作为一种实施方式,该方法的执行主体是业务服务器时,用户终端发送下载请求至业务服务器,业务服务器解析该下载请求,以获得指定应用程序的应用标识和用户终端对应的用户标识。其中,用户终端对应的用户标识为当前登录用户终端的用户帐号。作为一种实施方式,该业务服务器是应用商店应用程序对应的业务服务器,则该用户帐号为登录该应用商店应用程序的用户ID。作为另一种实施方式,该用户帐号还可以是用户终端的终端标识,该终端标识可以是用户终端的设备ID,例如,用户终端的处理器ID、IP地址或者MAC地址等。
另外,该指定应用程序可以是用户请求下载的配置文件对应的应用程序,作为一种实施方式,用户终端安装有应用商店应用程序,则该应用商店应用程序包括下载界面,则该下载界面内显示有多个应用程序的标识和对应的下载按钮,其中,应用程序的标识可以是应用程序的图标和名称,用户点击指定应用程序的名称或者图标对应的下载按钮,用户终端检测到该下载按钮被触发则发送指定应用程序的应用标识对应的下载请求至业务服务器。
在一些实施例中,该下载请求可以是用户终端在安装了指定应用程序之后发送的。例如,用户终端在下载该指定应用程序之后,即获取到指定应用程序的安装文件,然后发送下载请求至业务服务器,以便下载指定应用程序的配置文件。
在另一些实施例中,该下载请求是用户终端在请求安装指定应用程序的时候,伴随该指定应用程序的安装请求一起发送至业务服务器的。具体地,该下载请求可以是指定应用程序的安装请求,业务服务器在获取该下载请求的时候,在将指定应用程序的配置文件发送至用户终端的同时,还将指定应用程序的安装文件一起发送至用户终端。
作为一种实施方式,该方法的执行主体是云端服务器时,用户终端发送下载请求至数据服务器,数据服务器将该下载请求发送至云端服务器,从而云端服务器获取指定应用程序的下载请求。
S302:确定所述用户标识对应的目标用户类别。
作为一种实施方式,业务服务器预先收集用户标识对应的用户数据,并根据该用户数据确定对应用户的用户类别。其中,用户数据用户记录用户的属性和使用应用的习惯等相关的数据。则在一些实施例中,用户终端内安装有数据采集组件,该数据采集组件能够采集用户在操作用户终端的应用程序的时所产生的操作数据,另外,用户该能够通过该数据采集组件主动向业务服务器内录入用户的属性数据等。具体地,用户数据包括用户基础数据、用户兴趣偏好数据、用户设备属性及行为数据和用户应用行为数据等。其中,用户基础数据包括用户身份信息,该用户身份信息包括用户的性别、年龄、职业以及居住地等用户基础数据,用户兴趣偏好数据包括用户兴趣偏好标签,用户兴趣偏好标签对应用户的兴趣内容。用户设备属性数据包括用户所使用的用户终端的属性信息,其包括用户所使用的用户终端的配置参数,例如,内存容量、电池容量或屏幕尺寸等。用户设备行为数据包括用户操作用户终端的操作数据,所对应的特征数据为用户操作用户终端所产生的数据,具体地,可以是操作用户的屏幕、锁屏键或者电源键等用户终端的设备组件而产生的数据。用户应用行为数据包括用户操作安装在用户终端内的应用程序的操作数据,所对应的特征数据为用户操作用户终端内安装的应用程序所产生的数据。
其中,上述的数据采集组件可以是用户终端的***SDK以及安装在应用程序内的SDK,则应用程序内的SDK组件通过预先设定在应用程序内的埋点将所采集的用户数据发送至业务服务器。其中,SDK即“软体开发工具包”,用于为特定的软件包、软件框架、硬件平台、操作***等建立应用软件的开发工具的集合。具体地,SDK组件安装在电子设备的操作***内或者某些应用程序内,与应用程序或者操作***绑定。SDK组件的作用是为其他应用程序访问数据而提供访问接口,也可以主动采集某些数据并发送至业务服务器。
因此,通过预先收集到的用户数据,能够得到该用户的用户类别。
作为一种实施方式,如果该方法的执行主体是云端服务器,则用户数据的收集和用户类别的确定可以是由数据服务器处理,作为另一种实施方式,还可以是数据服务器收集用户数据然后发送至云端服务器,由云端服务器对所收集的用户数据整理以得到每个用户标识对应的用户类别。
S303:根据所述目标用户类别,在所述应用标识对应的多个配置文件中确定目标配置文件,所述配置文件用于记录所述指定应用程序的热点代码标识。
其中,配置文件用于记录所述指定应用程序的热点代码标识。具体地,用户终端在安装指定应用程序之后,首先通过解析器对该应用程序解释执行,执行过程中,对应用程序的各个代码的调用次数、循环次数等进行统计,将调用次数或循环次数达到设定阈值的代码识别为热点编译单元,并记录到一配置文件(profile)中。其中,代码可以理解为应用程序的源码中的函数、方法(method)或者类(class)。配置文件通常为二进制文件,其中包含应用程序源码中热点代码标识,例如热点代码标识可以是索引、ID(Identity,身份)信息,其中,索引用于指示热点代码在应用程序源码中的位置。
不同的用户终端对指定应用程序的操作不同,则所产生的配置文件可以不同,不同的用户终端各自上传所产生的配置文件至服务器,服务器将该配置文件整合之后得到该指定应用程序对应的配置文件,于本申请实施例中,应用标识对应的多个配置文件均是整合之后的配置文件,作为一种实施方式,服务器根据用户的类别将多个用户的配置文件整合。例如,服务器获取到多个配置文件之后,根据每个配置文件对应的用户标识,确定每个用户标识的用户类别,将属于同一个类别内的多个用户标识的配置文件整合,以得到该类别对应的配置文件,则在用户类别存在多个的时候,指定应用程序对应多个配置文件,且每个配置文件对应一个用户类别。
则根据所述目标用户类别,在所述应用标识对应的多个配置文件中确定目标配置文件的实施方式可以是,在预先获取的每个用户类别对应的配置文件中,确定所述目标用户类别对应的配置文件,作为目标配置文件。
其中,应用程序的热点代码可以是用户操作该应用程序的常用模块或者功能所对应的代码。例如,用户经常使用某社交软件的评论功能,则该社交软件的热点代码可以是评论功能所对应的代码,并且该热点代码与用户标识对应。则通过某个指定配置文件和该指定配置文件对应的指定用户类别,能够确定经常使用该指定配置文件对应的指定功能的大部分用户所属于的类别,从而能够对多个用户按照类别聚类。
S304:将所述目标配置文件发送至所述用户终端,以指示所述用户终端根据所述目标配置文件对所述指定应用程序的热点代码预编译。
在确定发送下载请求的用户终端对应的配置文件之后,将该配置文件发送至用户终端,该用户终端在获取到配置文件之后,通过该配置文件内的指定应用程序的热点代码标识能够确定该指定应用程序的热点代码,然后,对该指定应用程序的热点代码预先编译,即将配置文件中记录的热点代码标识对应的程序代码编译为机器代码,从而避免后续在应用程序运行时对热点代码进行即时编译。
作为一种实施方式,该下载请求是安装请求,则服务器将该目标配置文件发送至所述用户终端的实施方式可以是,服务器将该指定应用程序的安装文件和目标配置文件发送至所述用户终端,也就是说,用户终端在安装该指定应用程序的时候,同时下载该指定应用程序的安装文件和配置文件,以便在安装在应用程序的时候,对该安装文件内的热点代码预编译。
作为另一种实施方式,服务器还可以是在下载该指定应用程序的安装文件之后,再将目标配置文件发送至用户终端,则在此实施例中,用户终端发送应用下载请求至服务器,下载指定应用程序的安装文件之后,在安装的时候,用户终端检测到未获取到该指定应用程序的配置文件,则发送指定应用程序的配置下载请求至服务器,该配置下载请求包括指定应用程序的应用标识和用户终端对应的用户标识,则服务器根据上述S302至S304的步骤将目标配置文件发送至用户终端。
另外,当该方法的执行主体是云端服务器的时候,由云端服务器获取目标配置文件之后,将该目标配置文件发送至数据服务器,由数据服务器将该目标配置文件发送至用户终端。
请参阅图4,本申请实施例提供了一种代码编译方法,应用于服务器,该服务器可以是上述业务服务器200,还可以是上述的云端服务器400。具体地,该方法包括:S410至S470。
S410:获取指定应用程序的下载请求,所述下载请求包括所述指定应用程序的应用标识和用户终端对应的用户标识。
S420:确定所述用户标识对应的目标用户类别。
S430:获取多个用户标识对应的配置文件和用户数据。
需要说明的是,S430至S450可以是在S410之前,要可以是在S420之后以及在S460之前,只要能够保证在执行在每个用户类别对应的配置文件中,确定所述目标用户类别对应的配置文件的时候,已经获取到每个用户类别对应的配置文件即可。
作为一种实施方式,服务器在收集不同的用户终端上传的配置文件的时候,还同时能够获取到用户标识对应的用户数据,从而能够获取到不同的用户标识对应的配置文件和每个用户标识对应的用户数据。其中,配置文件和用户数据与应用标识对应。
作为一种实施方式,用户终端间隔预设时间周期获取用户标识对应的配置文件和用户数据发送至业务服务器或者云端服务器保存,其中,预设时间周期可以是预先根据需求而设定的时间间隔。例如,该预设时间间隔可以是24小时,则用户终端每天获取用户标识对应的配置文件和用户数据发送至业务服务器或者云端服务器保存。
S440:根据每个所述用户标识对应的用户数据将多个所述用户标识划分为多个用户类别,其中,每个所述用户类别对应至少一个用户标识。
由于用户数据能够反映用户的属性和操作应用程序的数据,则可以通过用户的属性标签和应用标签将用户划分为多个用户类别。
作为一种实施方式,预先设定多个而用户属性标签,其中,用户属性标签包括用户属性相关的多个标签,例如,该属性标签可以包括性别标签、年龄标签和居住地标签以及兴趣标签等,具体地,可以包括男性、女性、多个年龄段标签、多个居住地标签以及多个兴趣标签,则用户数据可以包括上述的用户基础数据和用户兴趣偏好数据等,则感觉用户标识对应的用户数据将该用户标识设置该用户数据所对应的标签。以年龄标签为例,则该年龄标签包括第一年龄标签、第二年龄标签和第三年龄标签,其中,第一年龄标签对应的年龄段是15至25岁,第二年龄标签对应的是26至40岁,第三年龄标签对应的是41岁及以上。则用户标识ID1对应的用户数据中年龄相关的数据为20岁,则该用户标识ID1对应的年龄标签是第一年龄标签。则一个用户标识可以对应多个类型标签,例如,用户标识ID1对应的类型标签包括第一年龄标签、男性标签、X城市居住地标签和游戏爱好标签等,则用户标识对应的多个标签作为用户的用户标识对应的用户类别,即该多个类型标签作为用户的用户类别标签。
作为另一种实施方式,该用户数据还可以包括用户的常用应用程序标识。具体地,用户终端获取用户对该用户终端内安装的多个应用程序的操作数据,该操作数据包括所操作的应用程序的标识、操作时间和次数等信息。则用户终端或者数据服务器或者而上述服务器,获取该多个应用程序的操作数据,从而能够统计到用户通过用户终端操作的每个应用程序的操作时间和次数,进而根据该操作数据确定用户的常用应用程序标识,具体地,可以是根据每个应用程序标识对应的操作次数将多个应用程序的标识排序以得到应用序列,在该应用序列内操作次数越多的应用程序的标识在该序列内的位置越靠前,然后选择该序列内的排名靠前的N个应用程序的标识作为常用应用程序标识,其中,N为正整数。
然后,根据常用应用程序的标识中,每个应用程序的标识所对应的应用程序的类型确定用户的常用应用类型。具体地,确定每个常用应用程序的标识所对应的应用程序的类型,其中,应用程序的类别,可以是应用程序的开发商在开发的时候为应用程序设定的类别,也可以是应用程序在安装在电子设备上之后,用户为应用程序设定的类别,例如,用户在电子设备上安装某个应用程序,在安装完成并进入该应用程序之后,会显示一个对话框,指示用户为应用程序设定类别。则应用程序具体属于哪个类别,可以由用户根据需求而设定,例如,用户可以将某社交软件设置为音频类,或者设置为视频类,或者设置为社交类。
另外,考虑到有些应用程序可以播放视频也可以播放音频,则如果该应用程序支持视频播放的功能,就将该应用程序的类型设置为视频类型,如果不支持视频播放的功能,而仅仅支持音频播放的功能,则就将该应用程序的类型设置为音频类型。而具体地,应用程序是否支持视频播放功能,可以通过该应用程序的功能描述信息中,所包含的功能描述,例如,所支持的播放格式来判断是否支持视频格式的播放,也可以通过检测该应用程序的程序模块内是否播放视频播放模块,例如,某个视频播放的编解码算法等,从而能够确定该应用程序是否支持视频播放功能。
再者,如果有些应用程序的功能多样化,则需要根据应用程序的具体操作行为而确定该应用程序的类别,例如,如果有些应用程序能够播放视频,也能够播放音频,例如一些视频播放软件,可以播放纯音频文件,也可以播放视频,则该应用程序的类别可以根据应用程序的使用记录而确定,即根据该应用程序的一定时间段内的使用记录,确定用户使用该应用程序是倾向于播放视频还是更倾向于播放音频。
具体地,获取该应用程序在预设时间段内的所有用户的操作行为数据,其中,所有用户是指安装过该应用程序的所有用户,则该操作行为数据可以由应用程序对应的服务器内获取,也就是说,用户在使用该应用程序的时候会使用用户对应的用户账号登录该应用程序,而用户账号对应的操作行为数据会发送至应用程序对应的服务器,则服务器将所获取的操作行为数据与用户账号对应存储。在一些实施例中,用户终端发送针对应用程序的操作行为查询请求发送至该应用程序对应的服务器,服务器将一定预设时间段内的所有用户的操作行为数据发送至用户终端。
该操作行为数据包括所播放的音频文件的名称和时间、以及所播放的视频文件的名称和时间,通过分析该操作行为数据就能够确定在一定预设时间段内该应用程序播放的音频文件的数量以及总的时间,也可以得到该应用程序播放的视频文件的数量以及总的时间,则根据音频和视频文件的播放总时长在该预定时间段内的占比,确定应用程序的类别,具体地,获取音频和视频文件的播放总时长在该预定时间段内的占比,为方便描述,将音频文件的播放总时长在该预定时间段内的占比记为音频播放占比,将视频文件的播放总时长在该预定时间段内的占比记为视频播放占比,如果视频播放占比大于音频播放占比,则将应用程序的类别设定为视频类型,如果音频播放占比大于视频播放占比,则将应用程序的类别设定为音频类型。例如,预设时间段为30天,即720小时,而音频文件的播放总时长为200小时,则音频播放占比为27.8%,视频文件的播放总时长为330小时,则视频播放占比为45.8%,则视频播放占比大于音频播放占比,则将应用程序的类别设定为视频类型。
作为另一种实施方式,用户终端内的应用程序的UID是由一串数字构成的,且该数字的排列存在一定的规律性,不同的类别的应用程序的UID所对应的数字分段区域是不同的,例如,UID为00000至09999的应用程序同属于一个类别,因此,根据该应用程序的UID能够确定该应用程序对应的类别。
然后,在确定每个常用应用程序的标识所对应的应用程序的类型之后,可以将每个常用应用程序的标识所对应的应用程序的类型作为该用户标识对应的常用应用类型,要可以是统计每个应用程序的类型的个数,将个数最高的应用程序的类型作为该用户标识对应的常用应用类型。
从而通过上述得到的用户标识对应的多个类型标签,再经过聚类之后得到用户标识对应的用户类别,作为一种实施方式,可以通过DBSCAN聚类算法,对用户进行分类。需要说明的是,用户的类别可以包括多个子类别,而每个子类别对应上述的一个类型标签,例如,用户标识ID1对应的用户类别包括第一年龄标签、男性标签、X城市居住地标签、游戏爱好标签和自拍类应用类型标签等,另外,上述应用类型标签要可以用来确定用户的兴趣爱好标签。
S450:将每个所述用户类别内的至少一个所述用户标识对应的配置文件进行整合处理,以得到每个所述用户类别对应的配置文件。
在获取到用户标识对应的用户类别之后,能够将每个用户的配置文件与应用程序的应用标识和用户标识以及用户类别对应,则作为一种实施方式,业务服务器或者云端服务器内存储有配置文件记录,该配置文件记录包括多个配置文件标识和应用程序标识和用户类别标识。其中,一个应用程序标识对应多个用户类别标识,每个用户类别标识对应一个配置文件标识。例如,表1所示的配置文件记录。
表1
Figure BDA0002294124810000121
其中,USER1、USER2等为用户类别标识,每个用户类别标识代表一种用户类别,于本申请实施例中,该用户类别可以包括用户的使用习惯,例如该用户类别包括视频类用户、音乐类用户、聊天类用户以及游戏类用户,则该用户类别能够体现出用户常用应用程序的类别。
其中,Profile11、Profile21等为配置文件标识,服务器能够通过该配置文件标识确定该配置文件的存放位置并将获取该配置文件,则该配置文件标识可以是配置文件的索引,该索引指向一个存储空间,该存储空间用于存储配置文件。
另外,需要说明的是,上述的Profile11、Profile21等配置文件,是用户类别对应的多个配置文件整合之后的配置文件,则在一些实施例中,每个用户类别对应一个配置文件。
则云端服务器或者业务服务器内预先设置有配置文件整合模块,通过该整合模块能够将每个用户类别内的至少一个所述用户标识对应的配置文件进行整合处理。其中,整合处理是指将多个配置文件内的热点代码标识进行整理,例如,取相同的部分或者不同的部分作为整合之后的配置文件内的热点代码标识。另外,还可以根据用户类别内的多个配置文件中的常用热点代码标识进行整个,具体地,请参阅图5,S450包括:S451至S453。
S451:查找每个所述用户类别内的所有用户标识对应的配置文件中相同的热点代码标识,作为第一热点代码标识。
获取某一用户类别对应的多个配置文件,则将该配置文件命名为初始配置文件,则获取所有初始配置文件内相同的热点代码标识,构成第一标识集,则该第一标识集内的每个标识在每个初始配置文件内均出现。
假设,某一用户类别对应的多个配置文件分别为Profile1、Profile2、Profile3和Profile4。Profile1内包括的热点代码标识分别为index1、index2、index3、index4和index5,Profile2内包括的热点代码标识分别为index3、index4、index5和index6,Profile3内包括的热点代码标识分别为index4、index5、index8和index11,Profile4内包括的热点代码标识分别为index1、index3、index4和index5。则相同的热点代码标识为index4和index5,即第一热点代码标识为index4和index5。
S452:查找每个所述用户类别内的至少一个用户标识对应的配置文件中常用热点代码标识,作为第二热点代码标识。
然后再获取每个初始配置文件内的常用热点代码标识,从而将多个初始配置文件内的常用热点代码标识作为第二热点代码标识。其中,常用热点标识代码为使用频率较高的热点代码,具体地,常用热点代码标识为使用频率大于指定频率的热点代码的标识,其中,目标代码的使用频率可以是获取目标代码的使用次数以及所有代码的使用次数,其中,目标代码为所有代码中的一个代码,且该所有代码是应用程序对应的所有代码,从而将该使用次数比值作为目标代码的使用频率,则在使用频率大于热度阈值的时候,就判定该代码为热点代码,则进一步地,该使用频率大于指定频率,则可以判定该目标热点代码为常用热点代码。
作为一种实施方式,用户终端发送指定应用程序的配置文件的时候,该配置文件内除了包括热点代码的标识还包括热点代码的使用频率,则服务器能够根据该热点代码的使用频率查找到使用频率大于指定频率的热点代码的标识作为常用热点代码标识标识。
在一些实施例中,常用热点代码标识为配置文件内的多个热点代码标识中除去相同的热点代码标识之外的热点代码中的使用频率大于指定频率的热点代码的标识。以上述的Profile1、Profile2、Profile3和Profile4为例,则相同的热点代码标识为index4和index5,将配置问价内的多个热点代码中第一热点代码标识之外的热点代码作为待选热点代码,则Profile1的待选热点代码为index1、index2、index3,Profile2的待选热点代码为index3、index6,Profile3的待选热点代码为index8和index11,Profile4的待选热点代码为index1、index3。然后,将每个待选热点代码整合成一个待选热点代码集合,就index1、index2、index3、index6、index8和index11。然后,选择待选热点代码集合中的使用频率大于指定频率的热点代码的标识。例如,index1和index2的使用频率大于指定频率,则常用代码标识为index1和index2。
另外,需要说明的是,在不同的配置文件对应的待选热点代码中存在相同的热点代码的标识,将不同的配置文件的相同的热点代码的标识对应的使用频率整合,则整合后的使用频率作为该相同的热点代码的标识对应的使用频率,该整合方式可以是取两个使用频率的平均值。例如,上述的index1在Profile1的待选热点代码和Profile4的待选热点代码均出现,且Profile1中index1的使用频率是P1,Profile4中index1的使用频率是P4,index1的使用频率为(P1+P2)/2。
S453:将所述第一热点代码标识和所述第二热点代码标识整合处理,将每个所述用户类别对应的整合后的配置文件作为该用户类别对应的配置文件。
作为一种实施方式,将第一热点代码标识和所述第二热点代码标识合并得到合并后的配置文件,将每个所述用户类别对应的合并后的配置文件作为该用户类别对应的配置文件。
以上述的Profile1、Profile2、Profile3和Profile4为例,第一热点代码标识为index4和index5,第二热点代码标识为index1和index2,则合并后的配置文件包括index1、index2、index4和index5。
S460:在预先获取的每个用户类别对应的配置文件中,确定所述目标用户类别对应的配置文件,作为目标配置文件。
通过上述方式获取的每个用户类别对应的配置文件,可以被存储并且在执行S460的时候被使用。
S470:将所述目标配置文件发送至所述用户终端,以指示所述用户终端根据所述目标配置文件对所述指定应用程序的热点代码预编译。
作为一种实施方式,用户在安装指定应用程序的时候,该指定应用程序的配置文件是根据上述方式确定的,则该配置文件内所包含的热点代码标识为与请求下载安装该指定应用程序的用户同属一个用户类别的用户都在使用或者经常使用的功能对应的热点代码,而由于同一类别内的用户的操作习惯和兴趣偏好存在相似的地方,因此,通过上述方式确定的配置文件内的热点代码的标识更符合用户的使用习惯。
请参阅图6,本申请实施例提供了一种代码编译方法,应用于用户终端。具体地,该方法包括:S601至S603。
S601:发送下载请求至服务器,所述下载请求包括指定应用程序的应用标识和所述用户终端对应的用户标识。
S602:获取所述服务器发送的目标配置文件,所述目标配置文件为所述服务器根据所述用户标识对应的目标用户类别在所述应用标识对应的多个配置文件中确定的。
S603:根据所述目标配置文件对所述指定应用程序的热点代码预编译。
上述S601至S603的执行主体是用户终端,则具体的实施方式可以参考前述方法实施例,在此不再赘述。
请参阅图7,本申请实施例提供了一种代码编译方法,应用于用户终端。具体地,该方法包括:S710至S750。
S710:发送下载请求至服务器,所述下载请求包括指定应用程序的应用标识和所述用户终端对应的用户标识。
S720:获取所述服务器发送的目标配置文件,所述目标配置文件为所述服务器根据所述用户标识对应的目标用户类别在所述应用标识对应的多个配置文件中确定的。
S730:确定所述目标配置文件的大小是否小于指定数值。
在获取到目标配置文件的时候,可以确定目标配置文件的大小。作为一种实施方式,该目标配置文件的大小是指该目标配置文件本身的大小,目标配置文件内包括多个热点代码的标识,则目标配置文件的大小可以是指多个热点代码的标识对应的数据大小,即多个热点代码的标识所占的数据大小。由于目标配置文件可以通过前面的整合处理得到,因此,目标配置文件内的多个热点代码的标识的数量比较庞大,而导致目标配置文件过大,则目标配置文件大于指定数值的时候,表示目标配置文件内的热点代码的标识过多,即根据所述目标配置文件对所述指定应用程序的热点代码编译的时候,所需要编译成机器码的热点代码的数量比较庞大。其中,指定数值可以是根据经验而设定,要可以是根据电子设备的性能而决定。例如,根据电子设备的处理器的性能而设定,处理器性能比较好的时候,指定数值可以设置的比较高,处理器的性能比较差的时候,指定数值可以设置的比较高。于本申请实施例中,指定数值可以是50M。
S740:在所述指定应用程序被安装时,根据所述目标配置文件对所述指定应用程序的热点代码编译。
如果目标配置文件的大小小于指定数值,则表明目标配置文件内的代码比较少,即对这些热点代码编译的时候所耗费的时间比较短,因此,可以选择而在指定应用程序被安装时,根据所述目标配置文件对所述指定应用程序的热点代码编译。则不会导致因为安装应用程序的时候对热点代码的编译而导致应用程序的安装过程太久。
S750:在所述用户终端的使用状态处于指定状态时,根据所述目标配置文件对所述指定应用程序的热点代码编译。
如果在目标配置文件的大小大于或等于指定数值的时候,表明目标配置文件内的代码比较多,即对这些热点代码编译的时候所耗费的时间比较长,则如果选择而在指定应用程序被安装时,根据所述目标配置文件对所述指定应用程序的热点代码编译,会导致因为过多的热点代码需要被编译而导致安装的时间过久,则可以选择在用户终端的使用状态处于指定状态时,根据所述目标配置文件对所述指定应用程序的热点代码编译。
其中,使用状态可以是用户终端的指定应用程序的使用状态,也可以是用户终端的***使用状态。例如,用户终端的待机、锁屏等状态属于***使用状态。具体地,该使用状态可以是用户终端非忙碌的状态,例如,无应用程序在前台运行的状态或者锁屏状态,还可以是用户终端电量充足状态,例如,充电状态等。具体地,可以根据实际使用情况而设定的。
作为一种实施方式,该使用状态可以是灭屏状态,其中,该灭屏状态可以是屏幕熄灭的状态,具体地,可以是屏幕熄灭且屏幕被锁屏的状态,也可以是屏幕熄灭而屏幕未被锁屏的状态。则如图8所示,S750包括:S751至S753。
S751:在所述用户终端的屏幕状态处于灭屏状态时,确定所述用户终端的屏幕状态本次持续处于灭屏状态的持续时间长度。
在检测到用户终端处于灭屏状态的时候,检测用户终端的屏幕状态本次持续处于灭屏状态的持续时间长度。
S752:判断持续时间长度是否大于指定长度。
其中,指定长度用于表示灭屏状态的持续时间长度在大于该指定长度的情况下,用户本次放弃使用用户终端,而如果小于该指定长度,表示用户有可能只是短暂离开用户终端,会存在继续使用用户终端的可能。
S753:根据所述目标配置文件对所述指定应用程序的热点代码编译。
如果时间长度大于指定长度,则执行根据所述目标配置文件对所述指定应用程序的热点代码编译。其中,指定长度可以是3分钟。
另外,若检测到所述用户终端的屏幕状态变为亮屏状态,则终止对所述指定应用程序的热点代码编译。
在一些实施例中,用户终端在终止对所述指定应用程序的热点代码编译的时候,会记录下本次的终止位置,即终止的时候,最后一个被编译的热点代码的标识,记为终止代码标识。在下次用户终端的使用状态处于指定状态时,根据该终止代码标识继续编译配置文件对应的热点代码。
另外,配置文件内的每个热点代码的标识包括起始标识和终点标识,编译的时候,从起始代码向终点代码的顺序逐个编译。
在确定到终止代码标识之后,获取由终止代码标识至终点代码标识之间的多个代码标识对应的大小,作为目标配置文件的新的大小,并且返回执行S730。
在另一些实施例中,终止对所述指定应用程序的热点代码编译之后,下次再次编译的时候,依然从配置文件内的第一个热点代码,即上述的起始标识开始编译。
请参阅图9,其示出了本申请实施例提供的一种代码编译装置900的结构框图,该装置可以包括:获取单元901、确定单元902、配置单元903和编译单元904。
获取单元901,用于获取指定应用程序的下载请求,所述下载请求包括所述指定应用程序的应用标识和用户终端对应的用户标识。
确定单元902,用于确定所述用户标识对应的目标用户类别。
配置单元903,用于根据所述目标用户类别,在所述应用标识对应的多个配置文件中确定目标配置文件,所述配置文件用于记录所述指定应用程序的热点代码标识。
编译单元904,用于将所述目标配置文件发送至所述用户终端,以指示所述用户终端根据所述目标配置文件对所述指定应用程序的热点代码预编译。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
请参阅图10,其示出了本申请实施例提供的一种代码编译装置1000的结构框图,该装置可以包括:获取单元1001、确定单元1002、收集单元1003、配置单元1004和编译单元1005。
获取单元1001,用于获取指定应用程序的下载请求,所述下载请求包括所述指定应用程序的应用标识和用户终端对应的用户标识。
确定单元1002,用于确定所述用户标识对应的目标用户类别。
收集单元1003,用于获取多个用户标识对应的配置文件和用户数据;根据每个所述用户标识对应的用户数据将多个所述用户标识划分为多个用户类别,其中,每个所述用户类别对应至少一个用户标识;将每个所述用户类别内的至少一个所述用户标识对应的配置文件进行整合处理,以得到每个所述用户类别对应的配置文件。
进一步地,收集单元1003用于查找每个所述用户类别内的所有用户标识对应的配置文件中相同的热点代码标识,作为第一热点代码标识;查找每个所述用户类别内的至少一个用户标识对应的配置文件中常用热点代码标识,作为第二热点代码标识;将所述第一热点代码标识和所述第二热点代码标识整合处理,将每个所述用户类别对应的整合后的配置文件作为该用户类别对应的配置文件。其中,所述常用热点代码标识为使用频率大于指定频率的热点代码的标识。
配置单元1004,用于根据所述目标用户类别,在所述应用标识对应的多个配置文件中确定目标配置文件,所述配置文件用于记录所述指定应用程序的热点代码标识。
具体地,配置单元1004用于在预先获取的每个用户类别对应的配置文件中,确定所述目标用户类别对应的配置文件,作为目标配置文件。
编译单元1005,用于将所述目标配置文件发送至所述用户终端,以指示所述用户终端根据所述目标配置文件对所述指定应用程序的热点代码预编译。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
请参阅图11,其示出了本申请实施例提供的一种代码编译装置1100的结构框图,该装置可以包括:发送单元1101、接收单元1102和编译单元1103。
发送单元1101,用于发送下载请求至服务器,所述下载请求包括指定应用程序的应用标识和所述用户终端对应的用户标识。
接收单元1102,用于获取所述服务器发送的目标配置文件,所述目标配置文件为所述服务器根据所述用户标识对应的目标用户类别在所述应用标识对应的多个配置文件中确定的。
编译单元1103,用于根据所述目标配置文件对所述指定应用程序的热点代码预编译。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
请参阅图12,其示出了本申请实施例提供的一种代码编译装置1200的结构框图,该装置可以包括:发送单元1210、接收单元1220和编译单元1230。
发送单元1210,用于发送下载请求至服务器,所述下载请求包括指定应用程序的应用标识和所述用户终端对应的用户标识。
接收单元1220,用于获取所述服务器发送的目标配置文件,所述目标配置文件为所述服务器根据所述用户标识对应的目标用户类别在所述应用标识对应的多个配置文件中确定的。
编译单元1230,用于根据所述目标配置文件对所述指定应用程序的热点代码预编译。
具体地,编译单元1230包括确定子单元1231、第一编译子单元1232和第二编译子单元1233。
确定子单元1231用于确定所述目标配置文件的大小是否小于指定数值。
第一编译子单元1232用于在所述目标配置文件的大小小于指定数值时,在所述指定应用程序被安装时,根据所述目标配置文件对所述指定应用程序的热点代码编译。
第二编译子单元1233用于在所述目标配置文件的大小大于或等于指定数值时,在所述用户终端的使用状态处于指定状态时,根据所述目标配置文件对所述指定应用程序的热点代码编译。
进一步地,第二编译子单元1233还用于在所述用户终端的屏幕状态处于灭屏状态时,确定所述用户终端的屏幕状态本次持续处于灭屏状态的持续时间长度;若所述持续时间长度大于指定长度时,根据所述目标配置文件对所述指定应用程序的热点代码编译。
进一步地,第二编译子单元1233还用于若检测到所述用户终端的屏幕状态变为亮屏状态,则终止对所述指定应用程序的热点代码编译。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参考图13,其示出了本申请实施例提供的一种电子设备的结构框图。该电子设备100可以是智能手机、平板电脑、电子书等能够运行应用程序的电子设备,该电子设备可以是上述的服务器,也可以是上述的用户终端。本申请中的电子设备100可以包括一个或多个如下部件:处理器110、存储器120、以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器120中并被配置为由一个或多个处理器110执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
处理器110可以包括一个或者多个处理核。处理器110利用各种接口和线路连接整个电子设备100内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行电子设备100的各种功能和处理数据。可选地,处理器110可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器110可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作***、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块通信芯片进行实现。
存储器120可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器120可用于存储指令、程序、代码、代码集或指令集。存储器120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作***的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储电子设备100在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
请参考图14,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质1400中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质1400可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质1400包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质1400具有执行上述方法中的任何方法步骤的程序代码1410的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码1410可以例如以适当形式进行压缩。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (14)

1.一种代码编译方法,其特征在于,应用于服务器,所述方法包括:
获取指定应用程序的下载请求,所述下载请求包括所述指定应用程序的应用标识和用户终端对应的用户标识;
确定所述用户标识对应的目标用户类别;
根据所述目标用户类别,在所述应用标识对应的多个配置文件中确定目标配置文件,所述配置文件用于记录所述指定应用程序的热点代码标识;
将所述目标配置文件发送至所述用户终端,以指示所述用户终端根据所述目标配置文件对所述指定应用程序的热点代码预编译。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标用户类别,在所述应用标识对应的多个配置文件中确定目标配置文件,包括:
在预先获取的每个用户类别对应的配置文件中,确定所述目标用户类别对应的配置文件,作为目标配置文件。
3.根据权利要求2所述的方法,其特征在于,所述在预先获取的每个用户类别对应的配置文件中,确定所述目标用户类别对应的配置文件,作为目标配置文件之前,还包括:
获取多个用户标识对应的配置文件和用户数据;
根据每个所述用户标识对应的用户数据将多个所述用户标识划分为多个用户类别,其中,每个所述用户类别对应至少一个用户标识;
将每个所述用户类别内的至少一个所述用户标识对应的配置文件进行整合处理,以得到每个所述用户类别对应的配置文件。
4.根据权利要求3所述的方法,其特征在于,所述将每个所述用户类别内的至少一个所述用户标识对应的配置文件进行整合处理,以得到每个所述用户类别对应的配置文件,包括:
查找每个所述用户类别内的所有用户标识对应的配置文件中相同的热点代码标识,作为第一热点代码标识;
查找每个所述用户类别内的至少一个用户标识对应的配置文件中常用热点代码标识,作为第二热点代码标识;
将所述第一热点代码标识和所述第二热点代码标识整合处理,将每个所述用户类别对应的整合后的配置文件作为该用户类别对应的配置文件。
5.根据权利要求4所述的方法,其特征在于,所述常用热点代码标识为使用频率大于指定频率的热点代码的标识。
6.一种代码编译方法,其特征在于,应用于用户终端,所述方法包括:
发送下载请求至服务器,所述下载请求包括指定应用程序的应用标识和所述用户终端对应的用户标识;
获取所述服务器发送的目标配置文件,所述目标配置文件为所述服务器根据所述用户标识对应的目标用户类别在所述应用标识对应的多个配置文件中确定的;
根据所述目标配置文件对所述指定应用程序的热点代码预编译。
7.根据权利要求6所述的方法,其特征在于,所述根据所述目标配置文件对所述指定应用程序的热点代码预编译,包括:
确定所述目标配置文件的大小是否小于指定数值;
若是,则在所述指定应用程序被安装时,根据所述目标配置文件对所述指定应用程序的热点代码编译;
若否,则在所述用户终端的使用状态处于指定状态时,根据所述目标配置文件对所述指定应用程序的热点代码编译。
8.根据权利要求7所述的方法,其特征在于,所述使用状态包括屏幕状态,所述若否,则在用户终端的使用状态处于指定状态时,根据所述目标配置文件对所述指定应用程序的热点代码编译,包括:
若否,则在所述用户终端的屏幕状态处于灭屏状态时,确定所述用户终端的屏幕状态本次持续处于灭屏状态的持续时间长度;
若所述持续时间长度大于指定长度时,根据所述目标配置文件对所述指定应用程序的热点代码编译。
9.根据权利要求8所述的方法,其特征在于,所述若所述持续时间长度大于指定长度时,对所述指定应用程序的热点代码编译之后,还包括:
若检测到所述用户终端的屏幕状态变为亮屏状态,则终止对所述指定应用程序的热点代码编译。
10.一种代码编译装置,其特征在于,应用于服务器,所述装置包括:
获取单元,用于获取指定应用程序的下载请求,所述下载请求包括所述指定应用程序的应用标识和用户终端对应的用户标识;
确定单元,用于确定所述用户标识对应的目标用户类别;
配置单元,用于根据所述目标用户类别,在所述应用标识对应的多个配置文件中确定目标配置文件,所述配置文件用于记录所述指定应用程序的热点代码标识;
编译单元,用于将所述目标配置文件发送至所述用户终端,以指示所述用户终端根据所述目标配置文件对所述指定应用程序的热点代码预编译。
11.一种代码编译装置,其特征在于,应用于用户终端,所述装置包括:
发送单元,用于发送下载请求至服务器,所述下载请求包括指定应用程序的应用标识和所述用户终端对应的用户标识;
接收单元,用于获取所述服务器发送的目标配置文件,所述目标配置文件为所述服务器根据所述用户标识对应的目标用户类别在所述应用标识对应的多个配置文件中确定的;
编译单元,用于根据所述目标配置文件对所述指定应用程序的热点代码预编译。
12.一种服务器,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如权利要求1-5任一项所述的方法。
13.一种用户终端,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如权利要求6-9任一项所述的方法。
14.一种计算机可读介质,其特征在于,所述可读存储介质存储有处理器可执行的程序代码,所述程序代码被所述处理器执行时使所述处理器执行权利要求1-5任一项所述方法。
CN201911193582.9A 2019-11-28 2019-11-28 代码编译方法、装置、服务器、用户终端及可读介质 Active CN111061484B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911193582.9A CN111061484B (zh) 2019-11-28 2019-11-28 代码编译方法、装置、服务器、用户终端及可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911193582.9A CN111061484B (zh) 2019-11-28 2019-11-28 代码编译方法、装置、服务器、用户终端及可读介质

Publications (2)

Publication Number Publication Date
CN111061484A true CN111061484A (zh) 2020-04-24
CN111061484B CN111061484B (zh) 2023-05-02

Family

ID=70299113

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911193582.9A Active CN111061484B (zh) 2019-11-28 2019-11-28 代码编译方法、装置、服务器、用户终端及可读介质

Country Status (1)

Country Link
CN (1) CN111061484B (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111768183A (zh) * 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN111770113A (zh) * 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和节点设备
CN111814202A (zh) * 2020-08-31 2020-10-23 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN111815310A (zh) * 2020-08-31 2020-10-23 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN112052047A (zh) * 2020-08-05 2020-12-08 北京智游网安科技有限公司 一种指令处理方法、终端及存储介质
CN112559088A (zh) * 2020-12-29 2021-03-26 Oppo广东移动通信有限公司 配置文件的优化方法、装置、服务器以及存储介质
CN112631608A (zh) * 2021-01-05 2021-04-09 北京字节跳动网络技术有限公司 编译方法、装置、终端及存储介质
CN113031957A (zh) * 2020-12-16 2021-06-25 深圳市欢太科技有限公司 应用程序的安装方法、客户端、终端、服务器及存储介质
WO2021129489A1 (zh) * 2019-12-24 2021-07-01 Oppo广东移动通信有限公司 应用程序预编译的方法、装置、电子设备及存储介质
WO2021129339A1 (zh) * 2019-12-24 2021-07-01 Oppo广东移动通信有限公司 配置文件处理方法、装置、电子设备及存储介质
CN113377378A (zh) * 2021-07-02 2021-09-10 北京百度网讯科技有限公司 用于小程序的处理方法、装置、设备及存储介质
CN113760490A (zh) * 2020-10-27 2021-12-07 北京京东振世信息技术有限公司 对微服务处理的方法、装置、电子设备及存储介质
CN113885870A (zh) * 2021-08-27 2022-01-04 荣耀终端有限公司 应用程序更新方法、电子设备、终端设备及***
EP3961976A1 (en) * 2020-08-31 2022-03-02 Alipay (Hangzhou) Information Technology Co., Ltd. Methods, blockchain nodes, systems and storage media for executing smart contract
US11301222B2 (en) 2020-08-31 2022-04-12 Alipay (Hangzhou) Information Technology Co., Ltd. Method for executing smart contract, blockchain node, and storage medium
US11327732B2 (en) 2020-08-31 2022-05-10 Alipay (Hangzhou) Information Technology Co., Ltd. Method for executing smart contract, blockchain node, and storage medium
US11385917B2 (en) 2020-08-31 2022-07-12 Alipay (Hangzhou) Information Technology Co., Ltd. Method for executing smart contract and blockchain node
CN115941794A (zh) * 2022-11-16 2023-04-07 北京奇艺世纪科技有限公司 一种文件存储方法、***、装置及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1632853A1 (en) * 2004-09-07 2006-03-08 Sony Ericsson Mobile Communications AB Method of running an application, apparatus implementing the method and computer program product
US20130305241A1 (en) * 2012-05-10 2013-11-14 International Business Machines Corporation Sharing Reconfigurable Computing Devices Between Workloads
CN104035781A (zh) * 2014-06-27 2014-09-10 北京航空航天大学 一种快速开发异构并行程序的方法
CN106775893A (zh) * 2016-12-30 2017-05-31 北京小米移动软件有限公司 对程序预编译的方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1632853A1 (en) * 2004-09-07 2006-03-08 Sony Ericsson Mobile Communications AB Method of running an application, apparatus implementing the method and computer program product
US20130305241A1 (en) * 2012-05-10 2013-11-14 International Business Machines Corporation Sharing Reconfigurable Computing Devices Between Workloads
CN104035781A (zh) * 2014-06-27 2014-09-10 北京航空航天大学 一种快速开发异构并行程序的方法
CN106775893A (zh) * 2016-12-30 2017-05-31 北京小米移动软件有限公司 对程序预编译的方法及装置

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021129339A1 (zh) * 2019-12-24 2021-07-01 Oppo广东移动通信有限公司 配置文件处理方法、装置、电子设备及存储介质
WO2021129489A1 (zh) * 2019-12-24 2021-07-01 Oppo广东移动通信有限公司 应用程序预编译的方法、装置、电子设备及存储介质
CN112052047A (zh) * 2020-08-05 2020-12-08 北京智游网安科技有限公司 一种指令处理方法、终端及存储介质
US11416272B2 (en) 2020-08-31 2022-08-16 Alipay (Hangzhou) Information Technology Co., Ltd. Methods, blockchain nodes, systems and storage media for executing smart contract
US11301222B2 (en) 2020-08-31 2022-04-12 Alipay (Hangzhou) Information Technology Co., Ltd. Method for executing smart contract, blockchain node, and storage medium
CN111814202B (zh) * 2020-08-31 2020-12-11 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN111768183B (zh) * 2020-08-31 2024-04-19 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
US11544044B2 (en) 2020-08-31 2023-01-03 Alipay (Hangzhou) Information Technology Co., Ltd. Methods, blockchain nodes, and storage media for executing smart contract
US11513827B2 (en) 2020-08-31 2022-11-29 Alipay (Hangzhou) Information Technology Co., Ltd. Methods, blockchain nodes and storage media for executing smart contracts
CN111814202A (zh) * 2020-08-31 2020-10-23 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN111770113A (zh) * 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和节点设备
CN111768183A (zh) * 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
US11385917B2 (en) 2020-08-31 2022-07-12 Alipay (Hangzhou) Information Technology Co., Ltd. Method for executing smart contract and blockchain node
US11379830B2 (en) 2020-08-31 2022-07-05 Alipay (Hangzhou) Information Technology Co., Ltd. Method for executing smart contract, blockchain node, and storage medium
EP3961976A1 (en) * 2020-08-31 2022-03-02 Alipay (Hangzhou) Information Technology Co., Ltd. Methods, blockchain nodes, systems and storage media for executing smart contract
EP3961438A1 (en) * 2020-08-31 2022-03-02 Alipay (Hangzhou) Information Technology Co., Ltd. Method for executing smart contract, blockchain node, and storage medium
CN111815310A (zh) * 2020-08-31 2020-10-23 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
US11327732B2 (en) 2020-08-31 2022-05-10 Alipay (Hangzhou) Information Technology Co., Ltd. Method for executing smart contract, blockchain node, and storage medium
US11366677B2 (en) 2020-08-31 2022-06-21 Alipay (Hangzhou) Information Technology Co., Ltd. Methods, blockchain nodes, and node devices for executing smart contract
CN113760490A (zh) * 2020-10-27 2021-12-07 北京京东振世信息技术有限公司 对微服务处理的方法、装置、电子设备及存储介质
CN113760490B (zh) * 2020-10-27 2023-09-05 北京京东振世信息技术有限公司 对微服务处理的方法、装置、电子设备及存储介质
CN113031957A (zh) * 2020-12-16 2021-06-25 深圳市欢太科技有限公司 应用程序的安装方法、客户端、终端、服务器及存储介质
CN112559088A (zh) * 2020-12-29 2021-03-26 Oppo广东移动通信有限公司 配置文件的优化方法、装置、服务器以及存储介质
CN112631608A (zh) * 2021-01-05 2021-04-09 北京字节跳动网络技术有限公司 编译方法、装置、终端及存储介质
CN113377378A (zh) * 2021-07-02 2021-09-10 北京百度网讯科技有限公司 用于小程序的处理方法、装置、设备及存储介质
CN113885870A (zh) * 2021-08-27 2022-01-04 荣耀终端有限公司 应用程序更新方法、电子设备、终端设备及***
CN113885870B (zh) * 2021-08-27 2022-09-20 荣耀终端有限公司 应用程序更新方法、电子设备、终端设备及***
CN115941794A (zh) * 2022-11-16 2023-04-07 北京奇艺世纪科技有限公司 一种文件存储方法、***、装置及电子设备

Also Published As

Publication number Publication date
CN111061484B (zh) 2023-05-02

Similar Documents

Publication Publication Date Title
CN111061484B (zh) 代码编译方法、装置、服务器、用户终端及可读介质
CN109960507B (zh) 编译优化方法、装置、存储介质、智能终端及服务器
CN111078318B (zh) 配置文件的处理方法、装置、***及存储介质
CN101976209B (zh) 相冲突的应用程序的适应性配置
CN111061483B (zh) 编译优化方法、装置及电子设备
CN112948026A (zh) 热点代码处理方法、装置、服务器、电子设备及存储介质
CN109791497B (zh) 一种执行热补丁的方法、装置及终端
CN111258557B (zh) 代码处理方法、装置、电子设备及计算机可读介质
WO2021115177A1 (zh) 应用安装方法、装置、终端设备、服务器及存储介质
US20130283274A1 (en) Method and system for discovering and activating an application in a computer device
CN110941424A (zh) 编译参数优化方法、装置及电子设备
CN112559088A (zh) 配置文件的优化方法、装置、服务器以及存储介质
CN112615758A (zh) 一种应用识别方法、装置、设备及存储介质
CN112559044A (zh) 一种播放切换方法、装置及计算机可读存储介质
CN113126994A (zh) 热点代码处理方法、装置、电子设备及存储介质
CN107450937B (zh) 一种应用程序的运行方法和运行装置
CN107154971A (zh) 一种应用下载方法及装置
CN102929662A (zh) 一种基于网络批量分区的方法
CN109976754B (zh) 一种信息显示的方法及其终端
WO2021115178A1 (zh) 应用程序预编译的方法、装置、服务器及存储介质
CN115827035A (zh) 设备升级方法、装置、存储介质及电子装置
CN112783500B (zh) 编译优化信息生成方法、装置及电子设备
CN112799690A (zh) 信息处理方法、装置、设备和存储介质
CN112540768A (zh) 文件处理方法、装置、服务器、电子设备及存储介质
CN115004667A (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
GR01 Patent grant
GR01 Patent grant