基于云存储的应用程序安装方法、系统及存储介质与流程

文档序号:18475081发布日期:2019-08-20 20:54阅读:210来源:国知局
基于云存储的应用程序安装方法、系统及存储介质与流程

本发明涉及计算机技术领域,尤其是基于云存储的应用程序安装方法、系统及存储介质。



背景技术:

目前android应用程序安装包小则几兆,大则上千兆字节,根据不同移动设备io读写性能影响,安装速度有四、五秒至上七、八分钟之久,让用户停留在应用安装界面过长会严重影响用户对应用程序的体验,漫长的安装过程中也可能出现安装失败情况,导致用户直接放弃体验该款应用,不利于应用程序的普及。

目前android系统正常安装流程主要包括:1、将安装包拷贝到指定目录/data/app/下;2、用户确认安装包信息;3、信息收集;4、安装包classes.dex代码优化;5、安装包子文件校验等过程。

上述安装步骤中应用程序安装包拷贝,应用程序代码优化,用户确认安装包信息,以及应用子文件校验(防止被篡改)和签名校验都需要花费较长的运行时间,而且会在短时间内快速消耗设备性能,降低用户体验感和缩短用户设备的使用寿命,在这其中任何一个步骤发生运行异常都会导致应用安装失败,成功率不高。



技术实现要素:

有鉴于此,本发明实施例提供一种安装速度快且成功率高的,基于云存储的应用程序安装方法、系统及存储介质。

第一方面,本发明实施例提供了一种基于云存储的应用程序安装方法,包括以下步骤:

将云存储挂载到设备的文件系统根目录,生成挂载目录;

创建第一软链接,并通过第一软链接将设备的安装包拷贝目录指向挂载目录;

在设备的系统安装包管理服务中增设云存储应用程序安装函数;

根据所述第一软链接的路径和应用程序证书文件的路径,通过云存储应用程序安装函数进行应用程序的安装。

进一步,还包括以下步骤:

制作应用程序模板。

进一步,还包括以下步骤:

创建第二软链接;

通过第二软链接将设备的数据存储目录指向云存储目录。

进一步,还包括以下步骤:

通过java序列化技术将应用证书信息生成应用程序证书文件,并将应用程序证书文件保存至挂载目录。

进一步,所述根据所述第一软链接的路径和应用程序证书文件的路径,通过云存储应用程序安装函数进行应用程序的安装这一步骤,包括以下步骤:

根据第一软链接指向的安装包拷贝目录,对安装包进行第一解析,得到package对象;

根据第一软链接指向的安装包拷贝目录,对安装包进行第二解析,得到应用程序证书文件信息;

根据第一解析的结果和第二解析的结果,对package对象进行属性配置;

通过package对象构建packagesettings对象;

将构建到的packagesettings对象存储至安装信息列表;

对安装信息列表进行校验;

将校验通过后的安装信息列表更新至列表目录和列表文件中;

根据列表目录和列表文件,通过云存储应用程序安装函数进行应用程序的安装。

进一步,所述对package对象进行属性配置这一步骤中,所述属性包括mcertificates属性、msignatures属性、msigningkeys属性和cpu架构属性。

进一步,所述对安装信息列表进行校验这一步骤,具体为:

对安装信息列表中的provider信息、service信息、activity信息、permission信息和receiver信息进行校验。

进一步,还包括以下步骤:

在应用程序安装完成后,以广播的方式将应用安装完成信息发送至其他应用程序。

第二方面,本发明实施例还提供了一种基于云存储的应用程序安装系统,包括:

至少一个处理器;

至少一个存储器,用于存储至少一个程序;

当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现所述的基于云存储的应用程序安装方法。

第三方面,本发明实施例还提供了一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行所述的基于云存储的应用程序安装方法。

上述本发明实施例中的一个或多个技术方案具有如下优点:本发明的实施例首先将云存储挂载到设备的文件系统根目录,然后将设备的安装包拷贝目录指向挂载目录,最后通过云存储应用程序安装函数进行应用程序的安装;本发明无需花费长时间来等待现有应用程序安装流程,简化了安装流程,提高了安装速度和安装成功率;而且无需将安装包存储至设备上,降低了设备的存储占用率,有助于提高设备的读写性能。

附图说明

图1为本发明实施例的步骤流程图;

图2为传统的应用程序安装流程与本发明的应用程序安装流程的对比示意图。

具体实施方式

下面结合说明书附图和具体实施例对本发明作进一步解释和说明。对于本发明实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。

参照图1,本发明实施例提供了一种基于云存储的应用程序安装方法,包括以下步骤:

将云存储挂载到设备的文件系统根目录,生成挂载目录;

创建第一软链接,并通过第一软链接将设备的安装包拷贝目录指向挂载目录;

在设备的系统安装包管理服务中增设云存储应用程序安装函数;

根据所述第一软链接的路径和应用程序证书文件的路径,通过云存储应用程序安装函数进行应用程序的安装。

进一步作为优选的实施方式,还包括以下步骤:

制作应用程序模板。

进一步作为优选的实施方式,还包括以下步骤:

创建第二软链接;

通过第二软链接将设备的数据存储目录指向云存储目录。

进一步作为优选的实施方式,还包括以下步骤:

通过java序列化技术将应用证书信息生成应用程序证书文件,并将应用程序证书文件保存至挂载目录。

进一步作为优选的实施方式,所述根据所述第一软链接的路径和应用程序证书文件的路径,通过云存储应用程序安装函数进行应用程序的安装这一步骤,包括以下步骤:

根据第一软链接指向的安装包拷贝目录,对安装包进行第一解析,得到package对象;

根据第一软链接指向的安装包拷贝目录,对安装包进行第二解析,得到应用程序证书文件信息;

根据第一解析的结果和第二解析的结果,对package对象进行属性配置;

通过package对象构建packagesettings对象;

将构建到的packagesettings对象存储至安装信息列表;

对安装信息列表进行校验;

将校验通过后的安装信息列表更新至列表目录和列表文件中;

根据列表目录和列表文件,通过云存储应用程序安装函数进行应用程序的安装。

进一步作为优选的实施方式,所述对package对象进行属性配置这一步骤中,所述属性包括mcertificates属性、msignatures属性、msigningkeys属性和cpu架构属性。

进一步作为优选的实施方式,所述对安装信息列表进行校验这一步骤,具体为:

对安装信息列表中的provider信息、service信息、activity信息、permission信息和receiver信息进行校验。

进一步作为优选的实施方式,还包括以下步骤:

在应用程序安装完成后,以广播的方式将应用安装完成信息发送至其他应用程序。

下面详细描述本发明的基于云存储的应用程序安装方法的具体实施步骤:

针对正常的安装程序流程来说,应用安装的拷贝流程需要将整个安装包源文件拷贝至文件系统的目录下(目录名一般是:“/data/app/应用包名-n/”,其中,n代表安装包的版本号,本实施例中,n为大于或等于1的整数)。

对于android4.4版本以上的系统,系统还会在安装应用时对这个安装包文件里边的classes.dex进行优化操作,以生成art虚拟机可直接执行的base.odex文件,以及对安装包里面的重要文件进行校验,判断是否被篡改过等步骤。

上述这三个步骤在安装的过程中将会大大增加cpu适用率,可能造成其他运行中的应用进入无响应状态或者闪退,移动设备也将出现发烫现象。

针对上述现有技术中存在的问题,本发明的方法采用云存储动态挂载方案来解决,本发明的方法的具体实施步骤如下:

在应用准备安装之前:

本实施例首先进行应用模板制作,并将云存储设备挂载到设备文件系统根目录下;

然后通过系统安装包管理服务packagemanagerservice中的安装应用函数installpackage生成“/data/app/应用包名-n/”目录;

接着,将此目录移动到云存储的挂载目录下,此时,本实施例将应用certificate(证书)信息通过java序列化生成对应的应用程序证书文件,保存到云存储的挂载目录下。

优选地,本实施例可直接通过自动化、一键式shell脚本来制作应用模板。

在应用安装时:

本实施例直接将云存储挂载到新的设备上,然后通过软链接的方式在设备的“/data/app/”目录下生成以“应用包名-n”命名的软链接(即第一软链接),所述第一软链接指向云存储相对应的应用包名目录;另外,本实施例还生成软链接“/data/data/应用包名/”(即第二软链接)来指向云存储目录,通过所述云存储目录来保存应用的数据。

接着,本实施例在系统服务packagemanagerservice下新增网络存储设备指定的云存储应用程序安装函数installpackageasnfs;通过修改命令行工具包pm.java和ipackagemanager.aidl的源码文件,以支持系统通过命令行方式进行应用极速安装。

另外,本实施例的shell脚本将在“/data/app/”目录下生成的软链接路径和证书文件路径传递给函数installpackageasnfs,以进行应用程序的安装操作。

本实施例通过函数installpackageasnfs进行应用程序的安装操作的具体实施步骤为:

s1、通过shell脚本执行packagemanager命令,具体执行代码为:

pminstall-r--nfs1--shell/ceph/com.package.name.cer/data/app/com.package.name-1/。

s2、根据第一软链接指向的安装包拷贝目录,对安装包进行第一解析,得到package对象;

具体地,本实施例通过packageparser.parsepackage函数来解析安装包的基本信息,生成package对象。

s3、根据第一软链接指向的安装包拷贝目录,对安装包进行第二解析,得到应用程序证书文件信息;

本实施例将解析得到的应用程序证书文件信息传入“/ceph/com.package.name.cer”这个证书文件目录中。

s4、对package对象的所有属性进行属性配置;所述属性包括mcertificates属性、msignatures属性、msigningkeys属性和cpu架构属性等。

具体地,本实施例通过给package对象的mcertificates属性、msignatures属性、msigningkeys属性和cpu架构属性赋值,能够省去现有技术中对子文件进行大量校验的过程,加快了应用程序的安装进程。

s5、通过package对象构建packagesettings对象;

s6、将构建到的packagesettings对象存储至安装信息列表;

s7、对安装信息列表进行校验;

具体地,本实施例对安装信息列表中的provider信息、service信息、activity信息、permission信息和receiver信息进行校验,能够移除因为该部分信息冲突引起的安装失败异常,提高了应用程序安装的成功率。

s8、将校验通过后的安装信息列表更新至列表目录和列表文件中;

s9、根据列表目录和列表文件,通过云存储应用程序安装函数进行应用程序的安装。

s10、在应用程序安装完成后,以广播的方式将应用安装完成信息发送至其他应用程序。

参照图2,本发明采用云存储动态挂载方案来安装应用程序,整个安装过程从云存储挂载到设备文件系统之后到安装完成之间耗时仅耗时100ms-200ms左右,相较于传统的安装方式,本发明的效率提高了20-30倍。

基于本发明的毫秒级安装技术,用户无需像传统应用程序的安装过程那样经过漫长的等待,可以快速体验应用和游戏,未来可运用于云手机应用或者游戏体验服务。与google的instantapps(即时应用)场景不一样,本发明无需下载4m大小的instantapps安装包,无需内置google服务就能体验所有功能,而不是一个功能点;而且instantapps需要应用开发者独立开发即时应用,人力成本较大,不利于普及。本发明配合云存储模式实现应用或者游戏点击即玩的效果,无需漫长的等待就能立马体验应用或者游戏的全部的功能,降低移动设备损耗和提高云存储设备的使用率。

另外,本发明通过正常模式安装生成应用运行目录以及内容,配合软链接技术生成必要云存储应用的文件,然后利用云存储模式存放至网络磁盘。在安装时,通过云存储挂载方式来避免安装包拷贝和代码优化等传统操作,以及跳过了应用安装包资源文件的校验过程,极大加快了安装速度。

与图1的方法相对应,本发明实施例还提供了一种基于云存储的应用程序安装系统,包括:

至少一个处理器;

至少一个存储器,用于存储至少一个程序;

当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现所述的基于云存储的应用程序安装方法。

上述方法实施例中的内容均适用于本系统实施例中,本系统实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。

与图1的方法相对应,本发明实施例还提供了一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行所述的基于云存储的应用程序安装方法。

在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或所述方框有时能以相反顺序被执行。此外,在本发明的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。

此外,虽然在功能性模块的背景下描述了本发明并且采用方块图的形式举例说明,但应当理解的是,除非另有相反说明,所述的功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本发明是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本发明。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本发明的范围,本发明的范围由所附权利要求书及其等同方案的全部范围来决定。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。

计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上是对本发明的较佳实施进行了具体说明,但本发明并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1