CN111061501A - 安卓应用的热更新方法及计算机可读存储介质 - Google Patents

安卓应用的热更新方法及计算机可读存储介质 Download PDF

Info

Publication number
CN111061501A
CN111061501A CN201811202894.7A CN201811202894A CN111061501A CN 111061501 A CN111061501 A CN 111061501A CN 201811202894 A CN201811202894 A CN 201811202894A CN 111061501 A CN111061501 A CN 111061501A
Authority
CN
China
Prior art keywords
android application
directory
preset
code
code packet
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
CN201811202894.7A
Other languages
English (en)
Other versions
CN111061501B (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.)
Fujian Tianquan Educational Technology Ltd
Original Assignee
Fujian Tianquan Educational Technology 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 Fujian Tianquan Educational Technology Ltd filed Critical Fujian Tianquan Educational Technology Ltd
Priority to CN201811202894.7A priority Critical patent/CN111061501B/zh
Publication of CN111061501A publication Critical patent/CN111061501A/zh
Application granted granted Critical
Publication of CN111061501B publication Critical patent/CN111061501B/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/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • 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)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种安卓应用的热更新方法及计算机可读存储介质,方法包括:根据预设的打包方式对安卓应用的js文件进行打包,得到N+1个代码包和一个标识文件,所述N为所述安卓应用的业务类型数;将所述N+1个代码包和标识文件存储至安卓应用的assets目录下;当检测到有更新的代码包,则将所述更新的代码包下载至SD卡的预设目录下;安卓应用启动时,判断assets目录下是否存在标识文件;若存在,则从SD卡的预设目录读取更新的代码包。本发明在提高页面启动速度的同时不影响系统性能,且支持热更新。

Description

安卓应用的热更新方法及计算机可读存储介质
技术领域
本发明涉及软件更新技术领域,尤其涉及一种安卓应用的热更新方法及计算机可读存储介质。
背景技术
React Native(跨平台的移动开发框架)开发中,js的打包方式有以下两种:
1、使用bundle命令打包。所有的js代码都会打包到同一个js代码包中。加载的时候,需要一次性读取并处理代码包,因此页面启动速度偏慢,可能会出现白屏的情况。
2、使用unbundle命令打包。每个js文件都被打包成一个单独的代码包,然后把这些文件放在同一个目录下。加载的时候,应用会采用按需加载的方式。页面启动速度相对快,但由于每个js文件都被打包成一个单独的代码包,每次需加载大量的代码包,可能会影响系统性能。
也就是说,React-Native打包的方式是两个极端,要么所有的js代码合并成一个代码包,要么每个js文件作为一个独立的代码包。
另外,React Native框架加载使用unbundle命令打包的代码包时,只会去加载Android APK(安卓APP的安装包)内的代码包,默认加载不了SD卡上的代码包,但是热更新(不需要重新安装应用的前提下,在线更新代码的一种技术)从网络上下载下来的代码包不可能存放在APK内,一般是放在SD卡上,所以这种打包方式无法支持热更新。
发明内容
本发明所要解决的技术问题是:提供一种安卓应用的热更新方法及计算机可读存储介质,提高页面启动速度的同时不影响系统性能,且支持热更新。
为了解决上述技术问题,本发明采用的技术方案为:一种安卓应用的热更新方法,包括:
根据预设的打包方式对安卓应用的js文件进行打包,得到N+1个代码包和一个标识文件,所述N为所述安卓应用的业务类型数;
将所述N+1个代码包和标识文件存储至安卓应用的assets目录下;
当检测到有更新的代码包,则将所述更新的代码包下载至SD卡的预设目录下;
安卓应用启动时,判断assets目录下是否存在标识文件;
若存在,则从SD卡的预设目录读取更新的代码包。
本发明还涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如下步骤:
根据预设的打包方式对安卓应用的js文件进行打包,得到N+1个代码包和一个标识文件,所述N为所述安卓应用的业务类型数;
将所述N+1个代码包和标识文件存储至安卓应用的assets目录下;
当检测到有更新的代码包,则将所述更新的代码包下载至SD卡的预设目录下;
安卓应用启动时,判断assets目录下是否存在标识文件;
若存在,则从SD卡的预设目录读取更新的代码包。
本发明的有益效果在于:相比现有技术中两种极端的打包方式,本发明通过采用折中的打包方式,将属于同一业务的js文件打包到同一个代码包中,后续可按业务需求加载不同的业务包,提高页面启动速度的同时不影响系统性能;同时,在打包时额外生成一个标识文件,当启动应用时,若存在该标识文件,则优先从SD卡中获取更新的代码包,从而实现了热更新。
附图说明
图1为本发明的一种安卓应用的热更新方法的流程图;
图2为本发明实施例一的方法流程图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明最关键的构思在于:将相同业务的js文件打包到同一个代码包中,并生成一个标识文件,加载时若存在该标识文件则优先从SD卡中加载代码包。
请参阅图1,一种安卓应用的热更新方法,包括:
根据预设的打包方式对安卓应用的js文件进行打包,得到N+1个代码包和一个标识文件,所述N为所述安卓应用的业务类型数;
将所述N+1个代码包和标识文件存储至安卓应用的assets目录下;
当检测到有更新的代码包,则将所述更新的代码包下载至SD卡的预设目录下;
安卓应用启动时,判断assets目录下是否存在标识文件;
若存在,则从SD卡的预设目录读取更新的代码包。
从上述描述可知,本发明的有益效果在于:提高页面启动速度的同时不影响系统性能,且支持热更新。
进一步地,所述根据预设的打包方式对安卓应用的js文件进行打包,得到N+1个代码包和一个标识文件具体为:
将安卓应用中对应相同业务的js文件打包到同一代码包中,得到N个业务包和一个基础包,所述N为所述安卓应用的业务类型数;
生成一个标识文件。
由上述描述可知,通过按照业务类型对js文件进行打包,相比使用bundle命令打包的方式,提高了页面启动速度,相比使用unbundle命令打包的方式,既保证了页面的启动速度,也不会影响系统性能。同时,通过生成标识文件,后续可根据该标识文件采取不同的代码包的加载方式。
进一步地,所述从SD卡的预设目录下的读取更新的代码包具体为:
通过文件映射的方式从SD卡的预设目录下的读取更新的代码包。
由上述描述可知,使得React Native框架可从SD卡上加载代码包。
进一步地,所述从SD卡的预设目录下的读取更新的代码包之后,进一步包括:
若所述预设目录下不存在更新的代码包,则从所述安卓应用的assets目录读取对应的代码包。
由上述描述可知,加载代码包时,在线下载并存储在SD卡上的代码包的优先级大于随APK发布的代码包,从而实现了热更新。
进一步地,所述判断assets目录下是否存在标识文件之后,进一步包括:
若不存在标识文件,则从所述assets目录读取代码包。
由上述描述可知,若不存在标识文件,则采用React Native框架默认的方式加载代码包。
本发明还提出一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如下步骤:
根据预设的打包方式对安卓应用的js文件进行打包,得到N+1个代码包和一个标识文件,所述N为所述安卓应用的业务类型数;
将所述N+1个代码包和标识文件存储至安卓应用的assets目录下;
当检测到有更新的代码包,则将所述更新的代码包下载至SD卡的预设目录下;
安卓应用启动时,判断assets目录下是否存在标识文件;
若存在,则从SD卡的预设目录读取更新的代码包。
进一步地,所述根据预设的打包方式对安卓应用的js文件进行打包,得到N+1个代码包和一个标识文件具体为:
将安卓应用中对应相同业务的js文件打包到同一代码包中,得到N个业务包和一个基础包,所述N为所述安卓应用的业务类型数;
生成一个标识文件。
进一步地,所述从SD卡的预设目录下的读取更新的代码包具体为:
通过文件映射的方式从SD卡的预设目录下的读取更新的代码包。
进一步地,所述从SD卡的预设目录下的读取更新的代码包之后,进一步包括:
若所述预设目录下不存在更新的代码包,则从所述安卓应用的assets目录读取对应的代码包。
进一步地,所述判断assets目录下是否存在标识文件之后,进一步包括:
若不存在标识文件,则从所述assets目录读取代码包。
实施例一
请参照图2,本发明的实施例一为:一种安卓应用的热更新方法,可应用在ReactNative开发的移动产品中,包括如下步骤:
S1:根据预设的打包方式对安卓应用的js文件进行打包,得到N+1个代码包和一个标识文件,所述N+1个代码包由N个业务包和1个基础包组成,所述N为所述安卓应用的业务类型数。具体地,自定义打包工具,在React Native的打包工具unbundle的基础上,将相同业务的js文件打包到同一代码包中,则会得到一个基础包和N个业务包,所述基础包中的js文件存储的是启用应用所必需的数据,N个业务包分别对应安卓应用的N个业务类型,同时,打包时,还会额外生成一个标识文件ApfBundle。
S2:将所述N+1个代码包和标识文件存储至安卓应用的assets目录下;即生成Android APK(安卓手机软件的安装包),APK中包含所述N+1个代码包和标识文件ApfBundle,并存储在APK的assets目录下。APP运行时,默认加载assets目录下的代码包,这些代码包是无法修改的,除非升级APP。
S3:将更新的代码包下载至SD卡的预设目录下。一般情况下,一些小修复、小优化是不会要求用户重新安装App的。APP会有个更新机制,后台会从网络上检测是否有更新的代码包,如果有更新的代码包,则会将其下载在SD卡指定的位置。本实施例中,若一个业务包中有一个js文件进行了更新,则会将整个更新后的业务包下载至SD卡的预设目录下。
S4:安卓应用启动时,判断assets目录下是否存在标识文件,若是,则执行步骤S5,若否,则采用React Native框架默认的加载代码包的方式,即直接加载APK内所需的代码包,也即执行步骤S7。
S5:判断SD卡的预设目录下是否存在所需的代码包,若是,则执行步骤S6,若否,则执行步骤S7。
S6:从SD卡的预设目录读取所需的更新后的代码包。
S7:从assets目录读取所需的代码包。
也就是说,当assets目录下存在标识文件ApfBundle时,在线下载并存储在SD卡上的代码包的优先级大于随APK发布的代码包,从而实现了热更新。
本实施例中的打包方式是基于unbundle命令的打包方式修改的,同时,修改了React Native框架c++层的内部的实现,增加加载unbundle打包的代码包的处理分支,允许React Native框架通过文件映射的方式加载SD卡上使用unbundle打包的代码包。因此,修改后的React Native框架加载代码包时是支持加载SD卡上的代码包的。
相比现有技术中两种极端的打包方式,本实施例通过采用折中的打包方式,将属于同一业务的js文件打包到同一个代码包中,后续可按业务需求加载不同的业务包,提高页面启动速度的同时不影响系统性能;同时,在打包时额外生成一个标识文件,当启动应用时,若存在该标识文件,则优先从SD卡中获取更新的代码包,从而实现了热更新。
实施例二
本实施例是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如下步骤:
根据预设的打包方式对安卓应用的js文件进行打包,得到N+1个代码包和一个标识文件,所述N为所述安卓应用的业务类型数;
将所述N+1个代码包和标识文件存储至安卓应用的assets目录下;
当检测到有更新的代码包,则将所述更新的代码包下载至SD卡的预设目录下;
安卓应用启动时,判断assets目录下是否存在标识文件;
若存在,则从SD卡的预设目录读取更新的代码包。
进一步地,所述根据预设的打包方式对安卓应用的js文件进行打包,得到N+1个代码包和一个标识文件具体为:
将安卓应用中对应相同业务的js文件打包到同一代码包中,得到N个业务包和一个基础包,所述N为所述安卓应用的业务类型数;
生成一个标识文件。
进一步地,所述从SD卡的预设目录下的读取更新的代码包具体为:
通过文件映射的方式从SD卡的预设目录下的读取更新的代码包。
进一步地,所述从SD卡的预设目录下的读取更新的代码包之后,进一步包括:
若所述预设目录下不存在更新的代码包,则从所述安卓应用的assets目录读取对应的代码包。
进一步地,所述判断assets目录下是否存在标识文件之后,进一步包括:
若不存在标识文件,则从所述assets目录读取代码包。
综上所述,本发明提供的一种安卓应用的热更新方法及计算机可读存储介质,相比现有技术中两种极端的打包方式,通过采用折中的打包方式,将属于同一业务的js文件打包到同一个代码包中,后续可按业务需求加载不同的业务包,提高页面启动速度的同时不影响系统性能;同时,在打包时额外生成一个标识文件,当启动应用时,若存在该标识文件,则优先从SD卡中获取更新的代码包,从而实现了热更新。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种安卓应用的热更新方法,其特征在于,包括:
根据预设的打包方式对安卓应用的js文件进行打包,得到N+1个代码包和一个标识文件,所述N为所述安卓应用的业务类型数;
将所述N+1个代码包和标识文件存储至安卓应用的assets目录下;
当检测到有更新的代码包,则将所述更新的代码包下载至SD卡的预设目录下;
安卓应用启动时,判断assets目录下是否存在标识文件;
若存在,则从SD卡的预设目录读取更新的代码包。
2.根据权利要求1所述的安卓应用的热更新方法,其特征在于,所述根据预设的打包方式对安卓应用的js文件进行打包,得到N+1个代码包和一个标识文件具体为:
将安卓应用中对应相同业务的js文件打包到同一代码包中,得到N个业务包和一个基础包,所述N为所述安卓应用的业务类型数;
生成一个标识文件。
3.根据权利要求1所述的安卓应用的热更新方法,其特征在于,所述从SD卡的预设目录下的读取更新的代码包具体为:
通过文件映射的方式从SD卡的预设目录下的读取更新的代码包。
4.根据权利要求1所述的安卓应用的热更新方法,其特征在于,所述从SD卡的预设目录下的读取更新的代码包之后,进一步包括:
若所述预设目录下不存在更新的代码包,则从所述安卓应用的assets目录读取对应的代码包。
5.根据权利要求1所述的安卓应用的热更新方法,其特征在于,所述判断assets目录下是否存在标识文件之后,进一步包括:
若不存在标识文件,则从所述assets目录读取代码包。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如下步骤:
根据预设的打包方式对安卓应用的js文件进行打包,得到N+1个代码包和一个标识文件,所述N为所述安卓应用的业务类型数;
将所述N+1个代码包和标识文件存储至安卓应用的assets目录下;
当检测到有更新的代码包,则将所述更新的代码包下载至SD卡的预设目录下;
安卓应用启动时,判断assets目录下是否存在标识文件;
若存在,则从SD卡的预设目录读取更新的代码包。
7.根据权利要求6所述的计算机可读存储介质,其特征在于,所述根据预设的打包方式对安卓应用的js文件进行打包,得到N+1个代码包和一个标识文件具体为:
将安卓应用中对应相同业务的js文件打包到同一代码包中,得到N个业务包和一个基础包,所述N为所述安卓应用的业务类型数;
生成一个标识文件。
8.根据权利要求6所述的计算机可读存储介质,其特征在于,所述从SD卡的预设目录下的读取更新的代码包具体为:
通过文件映射的方式从SD卡的预设目录下的读取更新的代码包。
9.根据权利要求6所述的计算机可读存储介质,其特征在于,所述从SD卡的预设目录下的读取更新的代码包之后,进一步包括:
若所述预设目录下不存在更新的代码包,则从所述安卓应用的assets目录读取对应的代码包。
10.根据权利要求6所述的计算机可读存储介质,其特征在于,所述判断assets目录下是否存在标识文件之后,进一步包括:
若不存在标识文件,则从所述assets目录读取代码包。
CN201811202894.7A 2018-10-16 2018-10-16 安卓应用的热更新方法及计算机可读存储介质 Active CN111061501B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811202894.7A CN111061501B (zh) 2018-10-16 2018-10-16 安卓应用的热更新方法及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811202894.7A CN111061501B (zh) 2018-10-16 2018-10-16 安卓应用的热更新方法及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN111061501A true CN111061501A (zh) 2020-04-24
CN111061501B CN111061501B (zh) 2023-12-29

Family

ID=70296665

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811202894.7A Active CN111061501B (zh) 2018-10-16 2018-10-16 安卓应用的热更新方法及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN111061501B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112882746A (zh) * 2021-02-03 2021-06-01 网易(杭州)网络有限公司 应用程序的更新方法、装置、存储介质及计算机设备
CN113434154A (zh) * 2021-06-11 2021-09-24 青岛海尔科技有限公司 安卓应用程序打包方法、装置、存储介质及电子装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102707977A (zh) * 2012-05-17 2012-10-03 江苏中科梦兰电子科技有限公司 一种基于Android应用软件的增量升级方法
US20170102929A1 (en) * 2015-10-12 2017-04-13 Samsung Electronics Co., Ltd. System and Method to Reduce Storage Area Usage of Android Application
CN106569844A (zh) * 2016-09-23 2017-04-19 北京五八信息技术有限公司 程序代码更新的处理方法、装置和设备
CN108228717A (zh) * 2017-12-06 2018-06-29 五八有限公司 页面的加载方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102707977A (zh) * 2012-05-17 2012-10-03 江苏中科梦兰电子科技有限公司 一种基于Android应用软件的增量升级方法
US20170102929A1 (en) * 2015-10-12 2017-04-13 Samsung Electronics Co., Ltd. System and Method to Reduce Storage Area Usage of Android Application
CN106569844A (zh) * 2016-09-23 2017-04-19 北京五八信息技术有限公司 程序代码更新的处理方法、装置和设备
CN108228717A (zh) * 2017-12-06 2018-06-29 五八有限公司 页面的加载方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112882746A (zh) * 2021-02-03 2021-06-01 网易(杭州)网络有限公司 应用程序的更新方法、装置、存储介质及计算机设备
CN112882746B (zh) * 2021-02-03 2023-07-07 网易(杭州)网络有限公司 应用程序的更新方法、装置、存储介质及计算机设备
CN113434154A (zh) * 2021-06-11 2021-09-24 青岛海尔科技有限公司 安卓应用程序打包方法、装置、存储介质及电子装置
CN113434154B (zh) * 2021-06-11 2023-07-21 青岛海尔科技有限公司 安卓应用程序打包方法、装置、存储介质及电子装置

Also Published As

Publication number Publication date
CN111061501B (zh) 2023-12-29

Similar Documents

Publication Publication Date Title
CN108027741B (zh) 基于补丁升级的文件处理方法、装置、终端以及存储介质
CN104182255B (zh) 一种系统应用的库文件升级方法及终端
CN107870787B (zh) 应用程序插件化加载方法及系统
US10761867B2 (en) Nested emulation and dynamic linking environment
EP3128421A1 (en) Method, device, and system for achieving java application installation by cloud compilation
CN105786538B (zh) 基于安卓系统的软件升级方法和装置
EP3528149A1 (en) Software repackaging prevention method and device
CN104866293B (zh) 一种对Android应用程序扩展功能的方法及装置
CN107885540A (zh) 一种加载应用程序静态资源的方法、装置及终端
CN108647032B (zh) 应用加载方法及装置、计算机装置和计算机可读存储介质
CN108845841B (zh) 改变终端应用行为的方法、装置及终端
CN109933350B (zh) 在应用中嵌入代码的方法、装置及电子设备
CN111309303B (zh) 代码生成方法、装置、计算机设备和存储介质
CN107305495A (zh) 实现软件安装包功能修改的方法及终端
CN111061501A (zh) 安卓应用的热更新方法及计算机可读存储介质
CN111651169B (zh) 基于web容器的区块链智能合约运行方法及系统
CN109960511B (zh) 基于虚拟化技术的动态库下发方法、存储介质及智能终端
US9098355B2 (en) Method and apparatus for substituting compiler built-in helper functions with machine instructions
CN110837383B (zh) 应用免安装升级方法及装置
CN109710287B (zh) 一种热更新方法、装置及计算机存储介质
CN117075960B (zh) 程序重构方法、应用跨平台迁移方法、装置与计算设备
CN112732349A (zh) 加载so库的方法、装置、电子设备和计算机可读存储介质
CN113312073B (zh) 一种安装包文件处理方法和相关装置
WO2019157891A1 (zh) 应用安装方法、应用安装包的生成方法
CN113220314A (zh) App资源加载及apk生成方法、装置、设备及介质

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