CN110851204A - 应用启动的方法及装置、应用打包的方法及装置 - Google Patents

应用启动的方法及装置、应用打包的方法及装置 Download PDF

Info

Publication number
CN110851204A
CN110851204A CN201911090243.8A CN201911090243A CN110851204A CN 110851204 A CN110851204 A CN 110851204A CN 201911090243 A CN201911090243 A CN 201911090243A CN 110851204 A CN110851204 A CN 110851204A
Authority
CN
China
Prior art keywords
application
file
executable file
resource file
resource
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
CN201911090243.8A
Other languages
English (en)
Other versions
CN110851204B (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.)
Beijing ByteDance Network Technology Co Ltd
Original Assignee
Beijing ByteDance Network 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 ByteDance Network Technology Co Ltd filed Critical Beijing ByteDance Network Technology Co Ltd
Priority to CN201911090243.8A priority Critical patent/CN110851204B/zh
Publication of CN110851204A publication Critical patent/CN110851204A/zh
Application granted granted Critical
Publication of CN110851204B publication Critical patent/CN110851204B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • G06F9/44526Plug-ins; Add-ons
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本公开涉及计算机技术领域,具体涉及应用启动的方法及装置、应用打包的方法及装置。本公开提供的应用启动的方法通过在第一应用的应用程序安装包中内置第二应用的可执行文件和资源文件,并在第一应用启动过程中解压前述文件,以供第一应用满足替换条件时分别替换第一应用的可执行文件和资源文件,使得应用启动后加载的运行文件均为第二应用的文件,因而本公开可以实现在应用发生异常后自动替换应用版本,且整个过程对用户无感知,以避免应用异常影响用户体验。

Description

应用启动的方法及装置、应用打包的方法及装置
技术领域
本公开涉及计算机技术领域,具体涉及应用启动的方法及装置、应用打包的方法及装置。
背景技术
随着互联网技术的快速发展,应用迭代愈发频繁。当一个已稳定运行的应用升级至新版本后,有可能产生各种各样的运行错误甚至发生崩溃(Crash)的情况,这一问题在测试版应用中尤为常见。
目前,通常是在发现bug后向用户推送新的更新版本或者补丁已解决此类问题。然而,发布新的版本或者补丁既需要用户等待一段时间,并且还会额外消耗流量,影响用户体验甚至造成用户流失。
发明内容
提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
一方面,本公开提供了一种应用启动的方法,所述方法包括:
在第一应用开始启动后,检查本地目录是否保存有第二可执行文件和第二资源文件;
若否,则从所述第一应用的应用程序安装包中解压所述第二可执行文件和所述第二资源文件至所述本地目录;
若是,则确定所述第一应用是否满足预设的替换条件;
若所述第一应用满足所述替换条件,则用解压后的所述第二可执行文件和所述第二资源文件分别替换第一可执行文件和第一资源文件以启动第二应用;
其中,所述第二应用和所述第一应用为同一应用的不同版本;所述第一可执行文件和所述第一资源文件为所述第一应用对应的文件;所述第二可执行文件和所述第二资源文件为所述第二应用的对应文件。
又一方面,本公开提供了一种应用打包的方法,所述方法包括:
获取第二应用对应的第二可执行文件和第二资源文件;
对第一应用对应的第一配置文件和第二应用对应的第二配置文件进行并集操作以生成第三配置文件;
将所述第二可执行文件、所述第二资源文件和所述第三配置文件打包进所述第一应用对应的应用程序安装包;
其中,所述应用程序安装包包括所述第一应用对应的第一可执行文件,所述第一可执行文件包括代表第一应用的类和自定义的类;所述第二可执行文件包括代表第二应用的类;所述自定义的类用于执行上述应用启动的方法,并用于调用所述代表第一应用的类或所述代表第二应用的类。
又一方面,本公开提供了一种应用启动的装置,所述装置包括:
检查单元,用于在第一应用开始启动后,检查本地目录是否保存有第二可执行文件和第二资源文件;
解压单元,用于若所述本地目录未保存有所述第二可执行文件和所述第二资源文件,则从第一应用的应用程序安装包中解压所述第二可执行文件和所述第二资源文件至所述本地目录;
替换确定单元,用于若所述本地目录保存有所述第二可执行文件和所述第二资源文件,则确定所述第一应用是否满足预设的替换条件;
第二启动单元,用于若所述第一应用满足所述替换条件,则用解压后的所述第二可执行文件和所述第二资源文件分别替换第一可执行文件和第一资源文件以启动第二应用;
其中,所述第二应用和所述第一应用为同一应用的不同版本;所述第一可执行文件和所述第一资源文件为所述第一应用对应的文件;所述第二可执行文件和所述第二资源文件为所述第二应用的对应文件。
又一方面,本公开提供了一种应用打包的装置,所述装置包括:
获取单元,用于获取第二应用对应的第二可执行文件和第二资源文件;
合并单元,用于对第一应用对应的第一配置文件和第二应用对应的第二配置文件进行并集操作以生成第三配置文件;
打包单元,用于将所述第二可执行文件、所述第二资源文件和所述第三配置文件打包进所述第一应用对应的应用程序安装包;
其中,所述应用程序安装包包括所述第一应用对应的第一可执行文件,所述第一可执行文件包括代表第一应用的类和自定义的类;所述第二可执行文件包括代表第二应用的类;所述自定义的类用于执行上述应用启动的方法,并用于调用所述代表第一应用的类或所述代表第二应用的类。
又一方面,本公开提供了一种终端,所述终端包括:
至少一个存储器和至少一个处理器;
其中,所述存储器用于存储程序代码,所述处理器用于调用所述存储器所存储的程序代码以执行上述方法。
另一方面,本公开提供了一种非暂态计算机存储介质,所述非暂态计算机存储介质存储有程序代码,所述程序代码用于执行上述方法。
本公开通过在第一应用中内置第二应用的可执行文件和资源文件,并在第一应用启动过程中解压前述文件,以供第一应用满足替换条件时分别替换第一应用的可执行文件和资源文件,使得应用启动后加载的运行文件均为第二应用的文件,其运行表现与第二应用相同,因而本公开可以实现在应用发生异常后自动替换应用版本,且整个过程对用户无感知,以避免应用异常影响用户体验。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
图1为本公开实施例提供的应用启动的方法的流程图;
图2为本公开另一实施例提供的应用启动的方法的流程图;
图3为本公开又一实施例提供的应用启动的方法的流程图;
图4为本公开一实施例提供的应用打包的方法的流程图;
图5为本公开一实施例提供的应用启动的装置的结构示意图;
图6为本公开另一实施例提供的应用启动的装置的结构示意图;
图7为本公开一实施例提供的应用打包的装置的结构示意图;
图8为用来实现本公开实施例的终端设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的装置实施方式中记载的步骤可以按照不同的顺序执行,和/或并行执行。此外,装置实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
图1示出了本公开实施例提供的应用启动的方法的流程图,该方法100包括步骤S101-步骤S105:
步骤S101:在第一应用开始启动后,检查本地目录是否保存有第二可执行文件和第二资源文件。
若本地未保存有第二可执行文件和第二资源文件,则执行步骤S102:从第一应用的应用程序安装包中解压第二可执行文件和第二资源文件至本地目录。
若本地目录保存有第二可执行文件和第二资源文件,则执行步骤S103:确定第一应用是否满足预设的替换条件。
若第一应用满足替换条件,则执行步骤S104:利用解压后的第二可执行文件和第二资源文件分别替换第一可执行文件和第一资源文件以启动第二应用。
其中,第二应用和第一应用为同一应用的不同版本,例如,第二应用可以为第一应用的上一正式版应用;第一可执行文件和第一资源文件为第一应用对应的文件;第二可执行文件和第二资源文件为第二应用的对应文件。可执行文件,是指包括应用程序的全部操作指令以及运行数据的文件,例如安卓平台的dex文件;资源文件是指应用中与源代码分离的资源,如图像、音频文件以及任何与应用的视觉呈现有关的内容。在本公开实施例中,本地目录是指终端本地用于存储文件的目录,不包括第一应用的应用程序安装包所包含的文件目录。本公开实施例通过在第一应用的应用程序安装包中预先内置第二应用的dex文件和资源文件以供后续替换使用。
这样,本公开实施例通过在第一应用的应用程序安装包中内置第二应用的可执行文件和资源文件,并在第一应用启动过程中解压前述文件,以供第一应用满足替换条件时分别替换第一应用的可执行文件和资源文件,使得应用启动后加载的运行文件均为第二应用的文件,其运行表现与第二应用相同,因而本公开实施例可以实现在应用发生异常后自动替换应用版本,且整个过程对用户无感知,以避免应用异常影响用户体验。
优选地,第二可执行文件和第二资源文件预先压缩保存于第一应用的应用程序安装包的assets目录下,以供第一应用启动时解压缩使用。其中,assets目录是安卓平台的一种资源目录,保存于assets目录下的文件无法被应用直接访问。因此,将第二可执行文件和第二资源文件保存于assets目录下,可以避免影响第一应用正常运行。
如图2所示,本公开另一实施例还提供方法200,该方法200包括步骤S201-步骤S207:
步骤S201:开始启动第一应用。
步骤S202:检查本地目录是否保存有第二可执行文件和第二资源文件。
若本地未保存有第二可执行文件和第二资源文件,则执行步骤S203:解压第一应用的应用程序安装包的assets目录下的第二可执行文件和第二资源文件至本地目录,并执行步骤S105:继续启动第一应用。
若本地目录保存有第二可执行文件和第二资源文件,则执行步骤S204:确定第一应用是否满足预设的替换条件。
若第一应用不满足替换条件,则执行步骤S205:继续启动第一应用。
若第一应用满足替换条件,则执行步骤S206:用解压后的第二可执行文件和第二资源文件分别替换第一可执行文件和第一资源文件以启动第二应用。
步骤S207:调用第二应用对应的Applicaton类以运行第二应用的代码。Application代表应用程序的类,属于Android***中的一个***组件,其是维护应用全局状态的基类,应用进程启动时Android***会创建Application类并调用类的onCreate()函数。
在本公开实施例中,通过调用第二应用对应的Applicaton类以运行第二应用的代码,其运行表现与第二应用相同,即相当于实现启动第二应用。
在一些实施例中,步骤S204进一步包括:A1:确定第一应用是否接收到服务器发送的替换指令,或A2:确定第一应用已发生的异常次数是否超过预设阈值。其中,如果第一应用接收到了服务器发送的替换指令或第一应用已发生的异常次数超过预设阈值,即可确定第一应用满足预设的替换条件。在本公开实施例中,应用开发者可以根据应用的BUG反馈情况主动通过服务器向客户端发送替换指令,或者客户端根据应用实际运行情况决定是否进行替换应用版本。
如图3所示,本公开另一实施例还提供方法300,该方法300包括步骤S301-步骤S308:
步骤S301:开始启动第一应用。
步骤S302:检查本地目录是否保存有第二dex文件和第二资源文件。
若本地目录未保存有第二dex文件和第二资源文件,则执行步骤S303:解压第一应用的应用程序安装包的assets目录下的第二dex文件和第二资源文件至本地目录,并执行步骤S305:继续启动第一应用。
若本地目录保存有第二dex文件和第二资源文件,则执行步骤S304:根据本地缓存数据确定第一应用已发生的异常次数是否超过阈值T。
若不超过阈值T,则执行步骤S305:继续启动第一应用。
若超过阈值T,则执行步骤S306。
步骤S306:用解压后的第二dex文件替换第一可执行文件。以在安卓平台下替换dex文件为例,可以自定义继承于PathClassLoader的类加载器ClassLoader,修改其默认加载dex文件的路径为本公开实施例的本地目录,然后通过该自定义的ClassLoader读取第二dex文件,并转换成Element数组,其中,Element数组是dex文件的封装,通过反射获取第一应用中已加载的Element数组,然后再通过反射将新的Element数组替换原有的Element数组,由此便完成了dex文件的替换。
步骤S307:用解压后的第二资源文件替换第一资源文件。以在安卓平台下替换资源文件为例,首先获取资源管理器ResourceManager,然后通过ResourceManager获取所有的配置信息(configuration),其中,每个配置信息都有其对应的Resource对象。Resources对象描述了android资源文件,Resource对象包含AssetManager对象,通过创建新的AssetManager,将第一应用的资源添加到该新的AssetManager中,最后用新的AssetManager替换Resource中的原本的AssetManager,由此便完成了资源文件的替换。
步骤S308:调用第二应用对应的Applicaton类以运行第二应用的代码。
在执行步骤S305中,如果启动第一应用发生异常,则执行步骤S3051:在本地缓存数据中记录异常并重新启动第一应用。
如果启动第一应用未发生异常,则执行步骤S3052:第一用用启动完成。
其中,本地缓存数据是指缓存于用户终端本地的物理内存中的数据。本公开实施例中,当启动第一应用发生异常时,在步骤S3051中记录此次异常至本地缓存数据,以供当第一应用再次启动时,在步骤S304中通过读取该本地缓存数据确定第一应用已发生异常的次数。通过此种方式,可以判断第一应用此时是否满足替换条件,如果已发生异常的次数已超过阈值T,即认为第一应用满足替换条件。
这样,在本公开实施例中,当第一应用启动发生异常时,通过记录该异常并立即重新启动应用,使其重复上述步骤直到其满足替换条件,可以使用户对启动异常无感知并实现用户无感知地替换应用版本。
在一些实施例中,步骤S3051可以进一步包括:调用异常捕获接口记录异常并重新启动应用。其中,异常捕获接口为自定义的UncaughtExceptionHandler,自定义的UncaughtExceptionHandler不显示异常提示弹窗。其中,UncaughtExceptionHandler系当线程由于未捕获的异常突然终止时调用的处理程序的接口。通常,用于当发生异常时,***会调用UncaughtExceptionHandler杀死应用程序并弹窗提示用户,例如“抱歉,应用程序已经停止运行”。本公开实施例通过自定义的UncaughtExceptionHandler替代***默认的UncaughtExceptionHandler以实现记录异常并重新启动应用。这样,一方面,仅通过对***默认的接口进行简单的修改即可实现当启动代码块发生异常时即自动记录异常并重启应用;另一方面,自定义的UncaughtExceptionHandler去除了***默认的弹窗可以在用户无感知的情况下重启应用,避免弹窗影响用户体验。
参考图4,对应于上述应用启动的方法,本公开实施例提供了一种应用打包的方法400,包括步骤S401-S403:
步骤S401:获取第二应用对应的第二可执行文件和第二资源文件。执行文件(例如安卓的dex文件)和资源文件为应用程序安装包(Android application package,APK)内部的主要文件。示例性地,可以通过解压第二应用的应用程序安装包获得第二应用对应的第二可执行文件和第二资源文件。
步骤S402:对第一应用对应的第一配置文件和第二应用对应的第二配置文件进行并集操作以生成第三配置文件。其中,配置文件,例如安卓平台的AndroidManifest文件,是每个应用程序必须的文件,其位于整个项目的根目录中,包含了应用的配置信息以及***需要根据其内容运行应用的代码,其可用于为应用的程序包命名,描述应用的各个组件,包括构成应用的活动(Activity)、服务、广播接收器和内容提供程序,还可以确定托管应用组件的进程、声明应用所需的最低Android API级别、列出应用必须链接到的库等。在本公开实施例中,通过对第一应用和第二应用的配置文件进行并集操作,以囊括第一应用和第二应用因版本不同而在各项组件配置上存在的差异。
步骤S403:将所述第二可执行文件、所述第二资源文件和所述第三配置文件打包进所述第一应用对应的应用程序安装包。
其中,第一应用对应的应用程序安装包包括第一应用对应的第一可执行文件,第一可执行文件包括代表第一应用的类和自定义的类;第二可执行文件包括代表第二应用的类;自定义的类用于执行上述应用启动的方法,并用于调用代表第一应用的类或代表第二应用的类。代表应用的类,包括代表第一应用的类和代表第二应用的类,例如Android***的Application类,是维护应用全局状态的基类。不同版本的应用的代表应用的类的实现不完全相同,因此,在本公开实施例中,应用程序安装包同时包含代表第一应用的类和代表第二应用的类。此外,本公开实施例还包括一个自定义的类,以实现上述应用启动的方法,并当需要启动第一应用时该自定义的类调用代表第一应用的类,或当需要启动第二应用时,调用代表第二应用的类。示例性地,本公开实施例的自定义的类可以在第一应用或第二应用的Application类的基础上进行自定义,具体地,可以在Application类的OnCreate()函数内删除相关业务代码,仅保留执行上述应用启动的方法的代码,应用进程启动时Android***会调用该自定义的类并调用其中的onCreate()函数以执行上述应用启动的方法并根据相应的判断调用第一应用的Application类或第二应用的Application类,以执行第一应用或第二应用的代码。这样,通过自定义的类作为应用启动后的入口或桥梁,即可实现应用启动后选择执行第一应用还是第二应用的相关代码,相比其他应用热修复方法,本公开实施例的方法更加简单方便且不会产生不兼容的问题。
这样,本公开实施例通过额外将第二应用的可执行文件和资源文件一并打包进第一应用的应用程序安装包中,以使第一应用根据需要基于第二应用的可执行文件和资源文件启动应用,使得应用启动后加载的运行文件均为第二应用的文件,其运行表现与第二应用相同,因而可以实现自动替换应用的版本。
在一些实施例中,步骤S401可以进一步包括:将第二可执行文件和第二资源文件保存到第一应用对应的assets目录下。其中,assets目录是安卓平台的一种资源目录,保存于assets目录下的文件无法被应用直接访问。因此,将第二可执行文件和第二资源文件保存于第一应用assets目录下,可以避免影响第一应用正常运行。
在一些实施例中,第一应用为测试版应用,所述第二应用为第一应用的前一正式版应用。通常而言,测试版应用往往存在大量的bug尚未进行修复,在本公开实施例中,应用发生异常并上报后,开发者得到了相应的异常信息,应用即可进行回滚到上一正式版本,因而避免应用异常持续影响用户体验。
参考图5,本公开实施例提供一种应用启动的装置500,用来实现上述实施例提供的应用启动的方法,装置500包括检查单元501、解压单元502、替换确定单元503和第二启动单元504,其中:
检查单元501,用于在第一应用开始启动后,检查本地目录是否保存有第二可执行文件和第二资源文件;
解压单元502,用于若本地目录未保存有第二可执行文件和第二资源文件,则从第一应用的应用程序安装包中解压第二可执行文件和第二资源文件至本地目录;
替换确定单元503,用于若本地目录保存有第二可执行文件和第二资源文件,则确定第一应用是否满足预设的替换条件;
第二启动单元504,用于若第一应用满足替换条件,则用解压后的第二可执行文件和第二资源文件分别替换第一可执行文件和第一资源文件以启动第二应用;
其中,第二应用和第一应用为同一应用的不同版本,例如第二应用为第一应用的上一正式版应用;第一可执行文件和第一资源文件为第一应用对应的文件;第二可执行文件和第二资源文件为第二应用的对应文件。可执行文件,是指包括应用程序的全部操作指令以及运行数据的文件,例如安卓平台的dex文件;资源文件是指应用中与源代码分离的资源,如图像、音频文件以及任何与应用的视觉呈现有关的内容;本地目录是指终端本地用于存储文件的目录,不包括第一应用的应用程序安装包所包含的文件目录。本公开实施例通过在第一应用的应用程序安装包中预先内置第二应用的dex文件和资源文件以供后续替换使用。
这样,本公开实施例通过在第一应用的应用程序安装包中内置第二应用的可执行文件和资源文件,并在第一应用启动过程中解压前述文件,以供第一应用满足替换条件时分别替换第一应用的可执行文件和资源文件,使得应用启动后加载的运行文件均为第二应用的文件,其运行表现与第二应用相同,因而本公开实施例可以实现在应用发生异常后自动替换应用版本,且整个过程对用户无感知,以避免应用异常影响用户体验。
对于装置的实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离模块说明的模块可以是或者也可以不是分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
在一些实施例中,替换确定单元503进一步用于:确定第一应用是否接收到服务器发送的替换指令,或确定第一应用已发生的异常次数是否超过预设阈值。其中,如果第一应用接收到了服务器发送的替换指令或第一应用已发生的异常次数超过预设阈值,替换确定单元503即可确定第一应用满足预设的替换条件。在本公开实施例中,应用开发者可以根据应用的BUG反馈情况主动通过服务器向客户端发送替换指令,或者客户端根据应用实际运行情况决定是否进行替换应用版本。
参考图6,在一些实施例中,应用启动的装置500还包括异常捕获单元505,用于若所述第一应用在启动过程中发生异常,则在本地缓存数据中记录所述异常并重新启动所述第一应用。
其中,本地缓存数据是指缓存于用户终端本地的物理内存中的数据。本公开实施例中,当启动第一应用发生异常时,异常捕获单元505记录此次异常至本地缓存数据,以供当第一应用再次启动时替换确定单元503通过读取该本地缓存数据确定第一应用已发生异常的次数。通过此种方式,替换确定单元503可以判断第一应用此时是否满足替换条件,如果已发生异常的次数已超过阈值T,即认为第一应用满足替换条件。
这样,在本公开实施例中,当第一应用启动发生异常时,通过异常捕获单元505记录该异常并立即重新启动应用,使其重复上述过程直到其满足替换条件,可以使用户对启动异常无感知并实现用户无感知地应用版本替换。
在一些实施例中,异常捕获单元505可以进一步用于:调用异常捕获接口记录异常并重新启动应用。其中,异常捕获接口为自定义的UncaughtExceptionHandler,自定义的UncaughtExceptionHandler不显示异常提示弹窗。其中,UncaughtExceptionHandler系当线程由于未捕获的异常突然终止时调用的处理程序的接口。通常,用于当发生异常时,***会调用UncaughtExceptionHandler杀死应用程序并弹窗提示用户,例如“抱歉,应用程序已经停止运行”。本公开实施例通过自定义的UncaughtExceptionHandler替代***默认的UncaughtExceptionHandler以实现记录异常并重新启动应用。这样,一方面,仅通过对***默认的接口进行简单的修改即可实现当启动代码块发生异常时即自动记录异常并重启应用;另一方面,自定义的UncaughtExceptionHandler去除了***默认的弹窗可以在用户无感知的情况下重启应用,避免弹窗影响用户体验。
参考图7,本公开实施例提供一种应用打包的装置700,用来实现上述实施例提供的应用打包的方法,装置700包括获取单元701、合并单元702和打包单元703,其中:
获取单元701,用于获取第二应用对应的第二可执行文件和第二资源文件;
合并单元702,用于对第一应用对应的第一配置文件和第二应用对应的第二配置文件进行并集操作以生成第三配置文件;
打包单元703,用于将第二可执行文件、第二资源文件和第三配置文件打包进第一应用对应的应用程序安装包。
其中,第一应用对应的应用程序安装包包括第一应用对应的第一可执行文件,第一可执行文件包括代表第一应用的类和自定义的类;第二可执行文件包括代表第二应用的类;自定义的类用于执行上述应用启动的方法,并用于调用代表第一应用的类或代表第二应用的类。代表应用的类,包括代表第一应用的类和代表第二应用的类,例如Android***的Application类,是维护应用全局状态的基类。不同版本的应用的代表应用的类的实现不完全相同,因此,在本公开实施例中,应用程序安装包同时包含代表第一应用的类和代表第二应用的类。此外,本公开实施例还包括一个自定义的类,以实现上述应用启动的方法,并当需要启动第一应用时该自定义的类调用代表第一应用的类,或当需要启动第二应用时,调用代表第二应用的类。示例性地,本公开实施例的自定义的类可以在第一应用或第二应用的Application类的基础上进行自定义,具体地,可以在Application类的OnCreate()函数内删除相关业务代码,仅保留执行上述应用启动的方法的代码,应用进程启动时Android***会调用该自定义的类并调用其中的onCreate()函数以执行上述应用启动的方法并根据相应的判断调用第一应用的Application类或第二应用的Application类,以执行第一应用或第二应用的代码。这样,通过自定义的类作为应用启动后的入口或桥梁,即可实现应用启动后选择执行第一应用还是第二应用的相关代码,相比其他应用热修复方法,本公开实施例的方法更加简单方便且不会产生不兼容的问题。
相应地,本公开还提供一种终端,包括:至少一个存储器和至少一个处理器;其中,存储器用于存储程序代码,处理器用于调用存储器所存储的程序代码以执行上述应用启动的方法。
相应的,本公开还提供一种非暂态计算机存储介质,该非暂态计算机存储介质存储有程序代码,程序代码用于执行上述应用启动的方法。非暂态计算机存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
下面参考图8,其示出了适于用来实现本公开实施例的终端设备600的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)等移动终端和诸如以及诸如数字TV、台式计算机等固定终端。图8示出的终端设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,终端设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有终端设备600操作所需的各种程序和数据。处理装置601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许终端设备600与其他设备进行无线或有线通信以交换数据。虽然图8示出了具有各种装置的终端设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的装置的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本公开实施例的装置中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述终端设备中所包含的;也可以是单独存在,而未装配入该终端设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该终端设备执行时,使得该终端设备:在第一应用开始启动后,检查本地目录是否保存有第二可执行文件和第二资源文件;若否,则从第一应用的应用程序安装包中解压所述第二可执行文件和所述第二资源文件至所述本地目录;若是,则确定所述第一应用是否满足预设的替换条件;若所述第一应用满足所述替换条件,则用解压后的所述第二可执行文件和所述第二资源文件分别替换第一可执行文件和第一资源文件以启动第二应用;其中,所述第二应用和所述第一应用为同一应用的不同版本;所述第一可执行文件和所述第一资源文件为所述第一应用对应的文件;所述第二可执行文件和所述第二资源文件为所述第二应用的对应文件。
或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该终端设备执行时,使得该终端设备:在第一应用开始启动后,检查本地目录是否保存有第二可执行文件和第二资源文件;若否,则从第一应用的应用程序安装包中解压所述第二可执行文件和所述第二资源文件至所述本地目录;若是,则确定所述第一应用是否满足预设的替换条件;若所述第一应用满足所述替换条件,则用解压后的所述第二可执行文件和所述第二资源文件分别替换第一可执行文件和第一资源文件以启动第二应用;其中,所述第二应用和所述第一应用为同一应用的不同版本;所述第一可执行文件和所述第一资源文件为所述第一应用对应的文件;所述第二可执行文件和所述第二资源文件为所述第二应用的对应文件。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的***、装置和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,检查单元还可以被描述为“用于在第一应用开始启动后,检查本地目录是否保存有第二可执行文件和第二资源文件的单元”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上***(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
根据本公开提供的一个或多个实施例,提供了一种应用启动的方法,方法包括:在第一应用开始启动后,检查本地目录是否保存有第二可执行文件和第二资源文件;若否,则从第一应用的应用程序安装包中解压第二可执行文件和第二资源文件至本地目录;若是,则确定第一应用是否满足预设的替换条件;若第一应用满足替换条件,则用解压后的第二可执行文件和第二资源文件分别替换第一可执行文件和第一资源文件以启动第二应用;其中,第二应用和第一应用为同一应用的不同版本;第一可执行文件和第一资源文件为第一应用对应的文件;第二可执行文件和第二资源文件为第二应用的对应文件。
根据本公开提供的一个或多个实施例,第二可执行文件和第二资源文件预先压缩保存于第一应用的应用程序安装包的assets目录下。
根据本公开提供的一个或多个实施例,确定第一应用是否满足预设的替换条件包括:确定第一应用是否接收到服务器发送的替换指令,或确定第一应用已发生的异常次数是否超过预设阈值。
根据本公开提供的一个或多个实施例提供的应用启动的方法,方法还包括:若第一应用在启动过程中发生异常,则在本地缓存数据中记录异常并重新启动第一应用。
根据本公开提供的一个或多个实施例,确定第一应用已发生的异常次数是否超过预设阈值包括:根据本地缓存数据确定第一应用已发生的异常次数是否超过预设阈值。
根据本公开提供的一个或多个实施例,在本地缓存数据中记录异常并重新启动第一应用包括:调用异常捕获接口记录异常并重新启动应用;其中,异常捕获接口为自定义的UncaughtExceptionHandler,自定义的UncaughtExceptionHandler不显示异常提示弹窗。
根据本公开提供的一个或多个实施例,第一应用为测试版应用,第二应用为第一应用的前一正式版应用。
根据本公开提供的一个或多个实施例,提供了一种应用打包的方法,方法包括:获取第二应用对应的第二可执行文件和第二资源文件;对第一应用对应的第一配置文件和第二应用对应的第二配置文件进行并集操作以生成第三配置文件;将第二可执行文件、第二资源文件和第三配置文件打包进第一应用对应的应用程序安装包;其中,应用程序安装包包括第一应用对应的第一可执行文件,第一可执行文件包括代表第一应用的类和自定义的类;第二可执行文件包括代表第二应用的类;自定义的类用于执行权利要求上述应用启动的方法,并用于调用代表第一应用的类或代表第二应用的类。
根据本公开提供的一个或多个实施例,获取第二应用对应的第二可执行文件和第二资源文件包括:将第二可执行文件和第二资源文件保存到第一应用对应的assets目录下。
根据本公开提供的一个或多个实施例,第一应用为测试版应用,第二应用为第一应用的前一正式版应用。
根据本公开提供的一个或多个实施例,提供了一种应用启动的装置,装置包括:检查单元,用于在第一应用开始启动后,检查本地目录是否保存有第二可执行文件和第二资源文件;解压单元,用于若本地目录未保存有第二可执行文件和第二资源文件,则从第一应用的应用程序安装包中解压第二可执行文件和第二资源文件至本地目录;替换确定单元,用于若本地目录保存有第二可执行文件和第二资源文件,则确定第一应用是否满足预设的替换条件;第二启动单元,用于若第一应用满足替换条件,则用解压后的第二可执行文件和第二资源文件分别替换第一可执行文件和第一资源文件以启动第二应用;其中,第二应用和第一应用为同一应用的不同版本;第一可执行文件和第一资源文件为第一应用对应的文件;第二可执行文件和第二资源文件为第二应用的对应文件。
根据本公开提供的一个或多个实施例,提供了一种应用打包的装置,装置包括:获取单元,用于获取第二应用对应的第二可执行文件和第二资源文件;合并单元,用于对第一应用对应的第一配置文件和第二应用对应的第二配置文件进行并集操作以生成第三配置文件;打包单元,用于将第二可执行文件、第二资源文件和第三配置文件打包进第一应用对应的应用程序安装包;其中,应用程序安装包包括第一应用对应的第一可执行文件,第一可执行文件包括代表第一应用的类和自定义的类;第二可执行文件包括代表第二应用的类;自定义的类用于执行上述应用启动的方法,并用于调用代表第一应用的类或代表第二应用的类。
根据本公开提供的一个或多个实施例,提供了一种终端,终端包括:至少一个存储器和至少一个处理器;其中,存储器用于存储程序代码,处理器用于调用存储器所存储的程序代码以执行上述应用启动的方法。
根据本公开提供的一个或多个实施例,提供了一种非暂态计算机存储介质,非暂态计算机存储介质存储有程序代码,程序代码用于执行上述应用启动的方法。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或装置逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

Claims (14)

1.一种应用启动的方法,其特征在于,所述方法包括:
在第一应用开始启动后,检查本地目录是否保存有第二可执行文件和第二资源文件;
若否,则从所述第一应用的应用程序安装包中解压所述第二可执行文件和所述第二资源文件至所述本地目录;
若是,则确定所述第一应用是否满足预设的替换条件;
若所述第一应用满足所述替换条件,则用解压后的所述第二可执行文件和所述第二资源文件分别替换第一可执行文件和第一资源文件以启动第二应用;
其中,所述第二应用和所述第一应用为同一应用的不同版本;所述第一可执行文件和所述第一资源文件为所述第一应用对应的文件;所述第二可执行文件和所述第二资源文件为所述第二应用的对应文件。
2.如权利要求1所述的应用启动的方法,其特征在于,所述第二可执行文件和所述第二资源文件预先压缩保存于所述第一应用的应用程序安装包的assets目录下。
3.如权利要求1所述的应用启动的方法,其特征在于,所述确定所述第一应用是否满足预设的替换条件包括:
确定所述第一应用是否接收到服务器发送的替换指令,或
确定所述第一应用已发生的异常次数是否超过预设阈值。
4.如权利要求3所述的应用启动的方法,其特征在于,所述方法还包括:
若所述第一应用在启动过程中发生异常,则在本地缓存数据中记录所述异常并重新启动所述第一应用。
5.如权利要求4所述的应用启动的方法,其特征在于,所述确定所述第一应用已发生的异常次数是否超过预设阈值包括:
根据所述本地缓存数据确定所述第一应用已发生的异常次数是否超过预设阈值。
6.如权利要求4所述的应用启动的方法,其特征在于,所述在本地缓存数据中记录所述异常并重新启动所述第一应用包括:
调用异常捕获接口记录所述异常并重新启动应用;
其中,所述异常捕获接口为自定义的UncaughtExceptionHandler,所述自定义的UncaughtExceptionHandler不显示异常提示弹窗。
7.如权利要求1所述的应用启动的方法,其特征在于,所述第一应用为测试版应用,所述第二应用为所述第一应用的前一正式版应用。
8.一种应用打包的方法,其特征在于,所述方法包括:
获取第二应用对应的第二可执行文件和第二资源文件;
对第一应用对应的第一配置文件和第二应用对应的第二配置文件进行并集操作以生成第三配置文件;
将所述第二可执行文件、所述第二资源文件和所述第三配置文件打包进所述第一应用对应的应用程序安装包;
其中,所述应用程序安装包包括所述第一应用对应的第一可执行文件,所述第一可执行文件包括代表第一应用的类和自定义的类;所述第二可执行文件包括代表第二应用的类;所述自定义的类用于执行权利要求1至7中任一项所述的方法,并用于调用所述代表第一应用的类或所述代表第二应用的类。
9.如权利要求8所述的应用打包的方法,其特征在于,所述获取第二应用对应的第二可执行文件和第二资源文件包括:
将所述第二可执行文件和所述第二资源文件保存到所述第一应用对应的assets目录下。
10.如权利要求8所述的应用打包的方法,其特征在于,所述第一应用为测试版应用,所述第二应用为所述第一应用的前一正式版应用。
11.一种应用启动的装置,其特征在于,所述装置包括:
检查单元,用于在第一应用开始启动后,检查本地目录是否保存有第二可执行文件和第二资源文件;
解压单元,用于若所述本地目录未保存有所述第二可执行文件和所述第二资源文件,则从所述第一应用的应用程序安装包中解压所述第二可执行文件和所述第二资源文件至所述本地目录;
替换确定单元,用于若所述本地目录保存有所述第二可执行文件和所述第二资源文件,则确定所述第一应用是否满足预设的替换条件;
第二启动单元,用于若所述第一应用满足所述替换条件,则用解压后的所述第二可执行文件和所述第二资源文件分别替换第一可执行文件和第一资源文件以启动第二应用;
其中,所述第二应用和所述第一应用为同一应用的不同版本;所述第一可执行文件和所述第一资源文件为所述第一应用对应的文件;所述第二可执行文件和所述第二资源文件为所述第二应用的对应文件。
12.一种应用打包的装置,其特征在于,所述装置包括:
获取单元,用于获取第二应用对应的第二可执行文件和第二资源文件;
合并单元,用于对第一应用对应的第一配置文件和第二应用对应的第二配置文件进行并集操作以生成第三配置文件;
打包单元,用于将所述第二可执行文件、所述第二资源文件和所述第三配置文件打包进所述第一应用对应的应用程序安装包;
其中,所述应用程序安装包包括所述第一应用对应的第一可执行文件,所述第一可执行文件包括代表第一应用的类和自定义的类;所述第二可执行文件包括代表第二应用的类;所述自定义的类用于执行权利要求1至7中任一项所述的方法,并用于调用所述代表第一应用的类或所述代表第二应用的类。
13.一种终端,其特征在于,所述终端包括:
至少一个存储器和至少一个处理器;
其中,所述存储器用于存储程序代码,所述处理器用于调用所述存储器所存储的程序代码以执行权利要求1至10中任一项所述的方法。
14.一种非暂态计算机存储介质,其特征在于,所述非暂态计算机存储介质存储有程序代码,所述程序代码用于执行权利要求1至10中任一项所述的方法。
CN201911090243.8A 2019-11-08 2019-11-08 应用启动的方法及装置、应用打包的方法及装置 Active CN110851204B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911090243.8A CN110851204B (zh) 2019-11-08 2019-11-08 应用启动的方法及装置、应用打包的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911090243.8A CN110851204B (zh) 2019-11-08 2019-11-08 应用启动的方法及装置、应用打包的方法及装置

Publications (2)

Publication Number Publication Date
CN110851204A true CN110851204A (zh) 2020-02-28
CN110851204B CN110851204B (zh) 2023-04-18

Family

ID=69600157

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911090243.8A Active CN110851204B (zh) 2019-11-08 2019-11-08 应用启动的方法及装置、应用打包的方法及装置

Country Status (1)

Country Link
CN (1) CN110851204B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112083928A (zh) * 2020-08-31 2020-12-15 广州新视展投资咨询有限公司 应用程序安装包的构建方法、应用程序运行方法及装置
CN112416418A (zh) * 2020-08-13 2021-02-26 上海哔哩哔哩科技有限公司 应用组件的生成方法、装置、计算机设备和可读存储介质
CN113760338A (zh) * 2020-06-05 2021-12-07 北京字跳网络技术有限公司 切换应用程序二进制接口abi的方法、装置及电子设备
CN114564369A (zh) * 2022-04-28 2022-05-31 云账户技术(天津)有限公司 应用程序的异常监测方法、装置、电子设备及存储介质
CN118132344A (zh) * 2024-05-06 2024-06-04 四川天邑康和通信股份有限公司 Iptv机顶盒的运行控制方法和装置、机顶盒及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080127169A1 (en) * 2006-08-29 2008-05-29 Ethan Malasky Software installation using template executables
CN106126290A (zh) * 2016-06-27 2016-11-16 微梦创科网络科技(中国)有限公司 应用程序优化方法、装置及***
CN107357613A (zh) * 2017-06-28 2017-11-17 广州酷狗计算机科技有限公司 应用更新方法、装置及计算机可读存储介质
CN107506221A (zh) * 2017-09-28 2017-12-22 阿里巴巴集团控股有限公司 应用程序升级方法、装置及设备
CN108491216A (zh) * 2018-03-05 2018-09-04 北京指掌易科技有限公司 一种Android***无感知应用安装升级的方法
CN109445829A (zh) * 2018-12-19 2019-03-08 四川虹美智能科技有限公司 一种产品软件程序升级方法、装置及***

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080127169A1 (en) * 2006-08-29 2008-05-29 Ethan Malasky Software installation using template executables
CN106126290A (zh) * 2016-06-27 2016-11-16 微梦创科网络科技(中国)有限公司 应用程序优化方法、装置及***
CN107357613A (zh) * 2017-06-28 2017-11-17 广州酷狗计算机科技有限公司 应用更新方法、装置及计算机可读存储介质
CN107506221A (zh) * 2017-09-28 2017-12-22 阿里巴巴集团控股有限公司 应用程序升级方法、装置及设备
CN108491216A (zh) * 2018-03-05 2018-09-04 北京指掌易科技有限公司 一种Android***无感知应用安装升级的方法
CN109445829A (zh) * 2018-12-19 2019-03-08 四川虹美智能科技有限公司 一种产品软件程序升级方法、装置及***

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113760338A (zh) * 2020-06-05 2021-12-07 北京字跳网络技术有限公司 切换应用程序二进制接口abi的方法、装置及电子设备
CN113760338B (zh) * 2020-06-05 2023-07-18 北京字跳网络技术有限公司 切换应用程序二进制接口abi的方法、装置及电子设备
CN112416418A (zh) * 2020-08-13 2021-02-26 上海哔哩哔哩科技有限公司 应用组件的生成方法、装置、计算机设备和可读存储介质
CN112083928A (zh) * 2020-08-31 2020-12-15 广州新视展投资咨询有限公司 应用程序安装包的构建方法、应用程序运行方法及装置
CN114564369A (zh) * 2022-04-28 2022-05-31 云账户技术(天津)有限公司 应用程序的异常监测方法、装置、电子设备及存储介质
CN118132344A (zh) * 2024-05-06 2024-06-04 四川天邑康和通信股份有限公司 Iptv机顶盒的运行控制方法和装置、机顶盒及介质

Also Published As

Publication number Publication date
CN110851204B (zh) 2023-04-18

Similar Documents

Publication Publication Date Title
CN110851204B (zh) 应用启动的方法及装置、应用打包的方法及装置
CN111090536B (zh) 一种获取内存泄露信息的方法、装置、介质和电子设备
CN109918166B (zh) 小程序处理方法、装置及电子设备
CN107291481B (zh) 一种组件更新方法、装置和***
CN111240766B (zh) 应用启动方法、装置、电子设备及计算机可读存储介质
CN111309391A (zh) 应用程序启动方法、装置、设备及介质
CN112965761B (zh) 一种数据处理方法、***、电子设备及存储介质
CN107644075B (zh) 收集页面信息的方法和装置
CN111079125A (zh) 一种应用程序调用第三方库动态提升权限的方法及装置
CN112596720A (zh) 业务运行方法、装置、电子设备和计算机存储介质
CN113900721A (zh) 操作***启动方法、装置和电子设备
CN113886264A (zh) 分布式数据库的内嵌方法、装置、设备及存储介质
CN112905220A (zh) 热修复方法、装置、设备及存储介质
CN113934437B (zh) 云手机安装应用的方法、***和客户端云手机
CN114090090B (zh) 终端固件的启动方法、装置、电子设备及存储介质
CN112631609B (zh) 编译方法、装置、终端及存储介质
CN110502251B (zh) 应用安装方法及装置
CN111382076B (zh) 应用程序的测试方法、装置、电子设备及计算机存储介质
CN116360802A (zh) 中间件处理方法、装置、电子设备和存储介质
CN113515299A (zh) 软件开发工具包sdk热升级方法、装置、设备及存储介质
CN112732365A (zh) 预装应用程序启动方法、装置、电子设备及存储介质
CN112506781A (zh) 测试监控方法、装置、电子设备、存储介质及程序产品
CN111324888B (zh) 应用程序启动时的验证方法、装置、电子设备及存储介质
CN111625326A (zh) 任务管线执行方法、装置及电子设备
CN111324386A (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