CN103595814B - Apk文件的合并传输及分解运行方法、装置和系统 - Google Patents
Apk文件的合并传输及分解运行方法、装置和系统 Download PDFInfo
- Publication number
- CN103595814B CN103595814B CN201310600731.5A CN201310600731A CN103595814B CN 103595814 B CN103595814 B CN 103595814B CN 201310600731 A CN201310600731 A CN 201310600731A CN 103595814 B CN103595814 B CN 103595814B
- Authority
- CN
- China
- Prior art keywords
- file
- apk file
- apk
- data
- merging
- 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.)
- Active
Links
Abstract
本发明实施例公开了一种安卓安装包APK文件的合并传输及分解运行方法、装置和系统,涉及数据处理领域,用于解决现有技术中如何对APK文件进行合并传输的问题。本发明中,由网关设备将多个待合并APK文件进行合并传输,接收设备得到包含各被合并APK文件数据的合并APK文件后,释放出各被合并APK文件并分别安装执行,从而解决了如何对APK文件进行合并传输和分解的问题。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种APK文件的合并传输及分解运行方法、装置和系统。
背景技术
APK是安卓(Android)安装包(Android Package)的缩写。APK是类似SymbianSis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。APK文件实质是ZIP格式,但后缀名被修改为APK,通过UnZip解压后,可以看到Dex文件,Dex是Android Dalvik执行程序(DalvikVMExecutes)的全称,即,Dex中包含的并非Java ME的字节码而是Dalvik字节码。合并APK文件多被用来满足一些特殊的需求,例如用户想只通过一次运行操作来运行多个APK文件,或者用户需要将自己的程序附着在其他APK程序上一起运行,或者在已有的APK文件程序上增加其他程序功能等等。APK文件的合并不能像Windows PE可执行文件一样采用几个文件直接拼接的方式,因为APK程序是在一个单独的虚拟机中执行,无法访问到外层的安装包。而且APK文件是ZIP格式,如果将几个ZIP文件直接合并在一起,也会引起格式混乱,出现无法解包的错误。到目前为止没有已知成熟的APK文件合并技术,如何实现网络中APK文件的合并传输是目前需要解决的问题。
发明内容
本发明实施例提供一种APK文件的合并传输及分解运行方法、装置和系统,用于解决现有技术中如何对APK文件进行合并传输和分解的问题。
一种安卓安装包APK文件的合并传输方法,该方法包括:
网关设备获取保存的分解头APK文件的固定数据体,所述分解头APK文件是用于安装执行被合并APK文件的APK文件;
网关设备在获取到一个待合并APK文件后,生成结合体文件,该结合体文件中包含所述固定数据体、所述待合并APK文件的文件头结构和数据;将该结合体文件发送给接收设备;
网关设备在获取到其他待合并APK文件后,基于所述结合体文件生成合并APK文件,该合并APK文件中包含其他待合并APK文件的文件头结构和数据、所述分解头APK文件的固定文件目录结构和各待合并APK文件的文件目录结构、以及签名文件;将所述合并APK文件中未发送给接收设备的数据发送给接收设备;
其中,所述基于所述结合体文件生成合并APK文件,具体包括:
网关设备根据其他待合并APK文件的数据计算得到其他待合并APK文件的文件头结构和文件目录结构,获取保存的所述分解头APK文件的固定文件目录结构,将其他待合并APK文件的文件头结构、其他待合并APK文件的数据、所述固定文件目录结构和其他待合并APK文件的文件目录结构,依次拼接在所述结合体文件的尾部,得到合并ZIP文件;
网关设备对所述合并ZIP文件进行签名,形成包含签名文件的合并APK文件。
一种APK文件的分解运行方法,该方法包括:
接收设备接收网关设备发送的结合体文件,该结合体文件中包含分解头APK文件的固定数据体、一个被合并APK文件的文件头结构和数据;所述分解头APK文件是用于安装执行被合并APK文件的APK文件;
接收设备接收网关设备发送的合并APK文件中未发送给接收设备的数据,所述合并APK文件中包含其他被合并APK文件的文件头结构和数据、所述分解头APK文件的固定文件目录结构和各被合并APK文件的文件目录结构、以及签名文件;
接收设备在数据接收完毕得到合并APK文件后,通过运行该合并APK文件将各被合并APK文件释放出来并分别安装和执行;
其中,所述通过运行该合并APK文件将各被合并APK文件释放出来并分别安装和执行,具体包括:
通过运行该合并APK文件中的分解头APK文件,从所述合并APK文件中读取各被合并APK文件的数据,并将读取的每个被合并APK文件的数据分别转存为一个APK文件;
申请系统管理ROOT权限,在获取到ROOT权限后将转存的各APK文件进行安装和运行。
一种安卓安装包APK文件的合并传输装置,该装置包括:
获取单元,用于获取保存的分解头APK文件的固定数据体,所述分解头APK文件是用于安装执行被合并APK文件的APK文件;
第一数据传输单元,用于在获取到一个待合并APK文件后,生成结合体文件,该结合体文件中包含所述固定数据体、所述待合并APK文件的文件头结构和数据;将该结合体文件发送给接收设备;
第二数据传输单元,用于在获取到其他待合并APK文件后,基于所述结合体文件生成合并APK文件,该合并APK文件中包含其他待合并APK文件的文件头结构和数据、所述分解头APK文件的固定文件目录结构和各待合并APK文件的文件目录结构、以及签名文件;将所述合并APK文件中未发送给接收设备的数据发送给接收设备;
其中,所述第二数据传输单元具体用于:
根据其他待合并APK文件的数据计算得到其他待合并APK文件的文件头结构和文件目录结构,获取保存的所述分解头APK文件的固定文件目录结构,将其他待合并APK文件的文件头结构、其他待合并APK文件的数据、所述固定文件目录结构和其他待合并APK文件的文件目录结构,依次拼接在所述结合体文件的尾部,得到合并ZIP文件;
对所述合并ZIP文件进行签名,形成包含签名文件的合并APK文件。
一种APK文件的分解运行装置,该装置包括:
第一数据接收单元,用于接收网关设备发送的结合体文件,该结合体文件中包含分解头APK文件的固定数据体、一个被合并APK文件的文件头结构和数据;所述分解头APK文件是用于安装执行被合并APK文件的APK文件;
第二数据接收单元,用于接收网关设备发送的合并APK文件中未发送给接收设备的数据,所述合并APK文件中包含其他被合并APK文件的文件头结构和数据、所述分解头APK文件的固定文件目录结构和各被合并APK文件的文件目录结构、以及签名文件;
安装执行单元,用于在数据接收完毕得到合并APK文件后,通过运行该合并APK文件将各被合并文件释放出来并分别安装和执行;
其中,所述安装执行单元具体用于:
通过运行该合并APK文件中的分解头APK文件,从所述合并APK文件中读取各被合并APK文件的数据,并将读取的每个被合并APK文件的数据分别转存为一个APK文件;
申请系统管理ROOT权限,在获取到ROOT权限后将转存的各APK文件进行安装和运行。
一种安卓安装包APK文件的合并传输及分解运行系统,该系统包括:
网关设备,用于获取保存的分解头APK文件的固定数据体,所述分解头APK文件是用于安装执行被合并APK文件的APK文件;在获取到一个待合并APK文件后,生成结合体文件,该结合体文件中包含所述固定数据体、所述待合并APK文件的文件头结构和数据;将该结合体文件发送给接收设备;在获取到其他待合并APK文件后,基于所述结合体文件生成合并APK文件,该合并APK文件中包含其他待合并APK文件的文件头结构和数据、所述分解头APK文件的固定文件目录结构和各待合并APK文件的文件目录结构、以及签名文件;将所述合并APK文件中未发送给接收设备的数据发送给接收设备;
接收设备,用于接收网关设备发送的结合体文件;接收网关设备发送的合并APK文件中未发送给接收设备的数据;在数据接收完毕得到合并APK文件后,通过运行该合并APK文件将各被合并文件释放出来并分别安装和执行;
其中,所述网关设备具体用于:
根据其他待合并APK文件的数据计算得到其他待合并APK文件的文件头结构和文件目录结构,获取保存的所述分解头APK文件的固定文件目录结构,将其他待合并APK文件的文件头结构、其他待合并APK文件的数据、所述固定文件目录结构和其他待合并APK文件的文件目录结构,依次拼接在所述结合体文件的尾部,得到合并ZIP文件;
对所述合并ZIP文件进行签名,形成包含签名文件的合并APK文件;
相应的,所述接收设备具体用于:
通过运行该合并APK文件中的分解头APK文件,从所述合并APK文件中读取各被合并APK文件的数据,并将读取的每个被合并APK文件的数据分别转存为一个APK文件;
申请系统管理ROOT权限,在获取到ROOT权限后将转存的各APK文件进行安装和运行。
本发明实施例提供的方案中,网关设备在获取到一个待合并APK文件后,生成结合体文件,该结合体文件中包含用于安装执行被合并APK文件的分解头APK文件的固定数据体、该待合并APK文件的文件头结构和数据;网关设备将该结合体文件发送给接收设备;在获取到其他待合并APK文件后,基于该结合体文件生成合并APK文件,该合并APK文件中包含其他待合并APK文件的文件头结构和数据、分解头APK文件的固定文件目录结构和各待合并APK文件的文件目录结构、以及签名文件;将合并APK文件中未发送给接收设备的数据发送给接收设备,接收设备接收结合体文件的数据后,继续接收合并APK文件中未发送给接收设备的数据,在数据接收完毕得到合并APK文件后,通过运行该合并APK文件将各被合并APK文件释放出来并分别安装和执行。可见,本方案中由网关设备将多个待合并APK文件进行合并传输,接收设备得到包含各被合并APK文件数据的合并APK文件后,释放出各被合并APK文件并分别安装执行,从而解决了如何对APK文件进行合并传输和分解的问题。
附图说明
图1为本发明实施例提供的APK文件的合并传输方法流程示意图;
图2为本发明实施例提供的APK文件的分解运行方法流程示意图;
图3a为本发明实施例一中的APK文件合并传输流程示意图;
图3b为本发明实施例一中的合并APK文件的结构示意图;
图3c为本发明实施例二中的合并APK文件的分解运行流程示意图;
图4为本发明实施例提供的APK文件的合并传输及分解运行系统结构示意图;
图5为本发明实施例提供的APK文件的合并传输装置结构示意图;
图6为本发明实施例提供的APK文件的分解运行装置结构示意图。
具体实施方式
为了解决如何对APK文件进行合并传输和分解的问题,本发明实施例提供一种APK文件的合并传输及分解运行方法。
参见图1,本发明实施例提供的APK文件的合并传输方法,包括以下步骤:
步骤10:网关设备获取保存的分解头APK文件的固定数据体,该分解头APK文件是用于安装执行被合并APK文件的APK文件;
步骤11:网关设备在获取到一个待合并APK文件后,生成结合体文件,该结合体文件中包含固定数据体、该待合并APK文件的文件头结构和数据;将该结合体文件发送给接收设备;
步骤12:网关设备在获取到其他待合并APK文件后,基于该结合体文件生成合并APK文件,该合并APK文件中包含其他待合并APK文件的文件头结构和数据、分解头APK文件的固定文件目录结构和各待合并APK文件的文件目录结构、以及签名文件;将合并APK文件中未发送给接收设备的数据发送给接收设备。
进一步的,在获取保存的分解头APK文件的固定数据体之前,网关设备读取预先设置的分解头APK文件,将该分解头APK文件分解为固定数据体、固定文件目录结构和可变数据体三部分,并将分解出的三部分分别单独保存;其中,固定数据体包括分解头APK文件中固定不变的子文件的文件头结构和文件数据体,固定文件目录结构包括分解头APK文件中固定不变的子文件的文件目录结构;可变数据体包括分解头APK文件中可变文件(例如签名文件)的数据。
具体的,步骤11中,生成结合体文件的具体实现方法可以如下:
网关设备根据待合并APK文件中的数据计算得到待合并APK文件的文件头结构,将该待合并APK文件的文件头结构和该待合并APK文件中的数据依次拼接在分解头APK文件的固定数据体的尾部,得到结合体文件。这里,待合并APK文件的文件头结构包括待合并APK文件中各子文件的文件头结构。
具体的,步骤12中,基于结合体文件生成合并APK文件的具体实现方法可以如下:
首先,网关设备根据其他待合并APK文件的数据计算得到其他待合并APK文件的文件头结构和文件目录结构,获取保存的分解头APK文件的固定文件目录结构,将其他待合并APK文件的文件头结构、其他待合并APK文件的数据、固定文件目录结构和其他待合并APK文件的文件目录结构,依次拼接在结合体文件的尾部,得到合并ZIP文件;这里,其他待合并APK文件的文件头结构包括其他待合并APK文件中各子文件的文件头结构,其他待合并APK文件的文件目录结构包括其他待合并APK文件中各子文件的文件目录结构。
然后,网关设备对合并ZIP文件进行签名,形成包含签名文件的合并APK文件。这里,可以使用签名工具对合并ZIP文件进行签名,将分解头APK文件中的签名文件替换为新生成的签名文件。
进一步的,网关设备在将结合体文件发送给接收设备后,保持与接收设备的网络连接状态;网关设备在将合并APK文件中未发送给接收设备的数据发送给接收设备后,关闭与接收设备的网络传输链路。
在将结合体文件发送给接收设备之前的操作运行时间很短,所以不会对网络中接收设备的网络造成阻塞。
本方法中,ZIP格式的文件主要由三部分数据组成,分别是文件头结构、文件数据体和文件目录结构。通过ZIP文件尾部的文件目录结构可以定位到其中每一个文件的起始位置。
文件头结构中包含的数据类型主要包括:文件循环校验码(CRC)值,文件原始大小、文件压缩后大小、压缩方法、最后修改日期时间、文件名长度等。
文件目录结构中包含的数据类型主要包括:文件CRC值、文件原始大小、文件压缩后大小、压缩方法、最后修改日期时间、文件名长度、文件头结构的偏移量等。
步骤11和步骤12中网关设备获取到APK文件的前提是能够识别APK文件,识别出APK文件的方法可以为:首先依据文件后缀名称判断文件类型,然后根据文件类型识别出APK文件。
本发明中的网关设备能够部分或全部的、直接或间接的获取接收设备的数据;该网关设备包括传输网关、应用网关、中继网关、接入网关、安全网关等。
参见图2,本发明实施例提供一种APK文件的分解运行方法,包括以下步骤:
步骤20:接收设备接收网关设备发送的结合体文件,该结合体文件中包含分解头APK文件的固定数据体、一个被合并APK文件的文件头结构和数据;所述分解头APK文件是用于安装执行被合并APK文件的APK文件;
步骤21:接收设备接收网关设备发送的合并APK文件中未发送给接收设备的数据,所述合并APK文件中包含其他被合并APK文件的文件头结构和数据、所述分解头APK文件的固定文件目录结构和各被合并APK文件的文件目录结构、以及签名文件;
步骤22:接收设备在数据接收完毕得到合并APK文件后,通过运行该合并APK文件将各被合并APK文件释放出来并分别安装和执行。
具体的,步骤22中,通过运行该合并APK文件将各被合并APK文件释放出来并分别安装和执行,具体实现可以如下:
通过运行该合并APK文件中的分解头APK文件,从所述合并APK文件中读取各被合并APK文件的数据,并将读取的每个被合并APK文件的数据分别转存为一个APK文件;
申请系统管理ROOT权限,在获取到ROOT权限后将转存的各APK文件进行安装和运行。
上述读取出各被合并APK文件的数据,具体可以通过调用Android系统的I/O操作库函数来实现。
上述申请ROOT权限具体可以通过调用Android系统命令来实现,是否能获取到ROOT权限由系统自身属性决定。
下面结合具体实施例对本发明进行说明:
实施例一:
本实施例中,在网关内设置一个网络数据控制系统,即APK文件的合并传输装置所在系统,其数据控制范围内有一台主机C,网关可以部分或者全部的获得主机C的网络传输数据。数据控制系统需要使传输到主机C的每一个APK文件,都与另一个APK文件(命名为“APK文件1”)进行合并,并且在主机C运行合并后的文件时,APK文件1和其他APK文件也同时被运行。如图3a所示,实施过程包括如下步骤:
对于发送APK文件的一方(服务器S):
步骤301:通过网络发送APK文件2;
对于执行APK文件合并的一方(网关):
步骤302:对主机C收发的网络数据流进行监控;
步骤303:在监控到APK文件数据流时,接收服务器S发送的APK数据,将APK数据保存到APK文件2;
识别APK文件数据流的方法有很多,比如超文本传输协议(HTTP)在请求传输文件过程中会发送文件名,依据后缀名可以判断文件类型;也可以使用APK文件本身的特征进行判断,由于APK文件是ZIP格式,其中就会包含ZIP头的固定特征码“PK”等(例如十六进制0x50,0x4B,0x03,0x04)。
步骤304:读取APK文件1和分解头APK文件,生成并保存结合体文件,具体的:
根据APK文件1中的数据计算得到APK文件1的文件头结构,将APK文件1的文件头结构和APK文件1中的数据依次拼接在分解头APK文件的固定数据体的尾部,得到结合体文件;
文件头结构的标识是固定值十六进制0x04034B50,其中主要的数据类型包括文件循环校验码(CRC)值、文件原始大小、文件压缩后大小、压缩方法、最后修改日期时间、文件名长度、文件名等。文件名可以任意定义,比如“assets\res1”。需要预先按照ZIP格式将分解头APK文件分为固定数据体、固定文件目录结构和可变数据体三部分,并将分解出的三部分分别单独保存。
步骤305:读取结合体文件,通过主机C的文件传输链路将结合体文件发送到主机C,此时主机C所要接收的文件数据并未结束,数据链路仍然保持打开。由于数据控制系统在主机C的网关上,所以可以对主机C的任何网络传输链路进行修改和控制。
步骤306:读取结合体文件和APK文件2,生成新的结合体文件,具体的:
根据APK文件2的数据计算得到APK文件2的文件头结构,将APK文件2的文件头结构和APK文件2的数据依次拼接在结合体文件的尾部,形成新的结合体文件;文件头结构的数据内容同步骤304,文件名可以任意定义,比如“assets\res2”。
步骤307:生成并保存合并ZIP文件,具体的根据APK文件1和APK文件2的数据计算得到APK文件1和APK文件2中的各子文件的文件目录结构,将分解头APK文件的固定文件目录结构、APK文件1中各子文件的文件目录结构和APK文件2中各子文件的文件目录结构依次拼接在新的结合体文件的尾部,形成合并ZIP文件;
文件目录结构的标识是固定值十六进制0x02014B50,其中主要的数据类型包括文件CRC校验值、文件原始大小、文件压缩后大小、压缩方法、最后修改日期时间、文件名长度、文件头结构的偏移量、文件名等。
步骤308:读取合并ZIP文件,生成并保存合并APK文件,具体的:对合并ZIP文件执行签名操作,生成一个合法的包含签名文件的合并APK文件。
步骤309:读取合并APK文件中未发送给主机C的数据,将读取的数据发送给主机C。
可以首先从合并APK文件中去除掉已发送给主机C的结合体数据,然后将剩余部分的数据通过主机C的文件传输链路发送给主机C。主机C接收完数据后整个文件传输链路关闭,主机C会将接收到的所有数据形成一个文件,该文件就是合并APK文件。
对于接收APK文件的一方(主机C):
步骤310:接收网关发送的结合体文件的数据;
步骤311:继续接收网关发送的合并APK文件中未发送给主机C的数据;
步骤312:在数据接收完毕后形成合并APK文件,将合并APK文件保存,合并APK文件的结构如图3b所示。
实施例二:
本实施例基于实施例一,具体说明实施例一中主机C得到合并APK文件后,对合并APK文件中的各被合并APK文件分别安装运行的方法,如图3c所示,实施过程包括如下步骤:
步骤321:主机C向安卓系统申请ROOT权限;
步骤322:判断是否获得ROOT权限,若是,则到步骤323,否则,到步骤329;
步骤323:从资源目录中读取被合并的APK数据;
步骤324-步骤325:将读取到的第一个资源文件的数据转存为新文件及APK文件1;将读取到的第二个资源文件的数据转存为新文件及APK文件2;
步骤326-步骤328:通过调用系统命令将APK文件1安装到系统中,并且调用运行安装后的文件;过调用系统命令将APK文件2安装到系统中,并且调用运行安装后的文件;此时,APK文件1和APK文件2均被运行起来,本流程结束。
步骤329:退出本流程。
参见图4,本发明实施例提供一种APK文件的合并传输及分解运行系统,该系统包括:
网关设备40,用于获取保存的分解头APK文件的固定数据体,所述分解头APK文件是用于安装执行被合并APK文件的APK文件;在获取到一个待合并APK文件后,生成结合体文件,该结合体文件中包含所述固定数据体、所述待合并APK文件的文件头结构和数据;将该结合体文件发送给接收设备;在获取到其他待合并APK文件后,基于所述结合体文件生成合并APK文件,该合并APK文件中包含其他待合并APK文件的文件头结构和数据、所述分解头APK文件的固定文件目录结构和各待合并APK文件的文件目录结构、以及签名文件;将所述合并APK文件中未发送给接收设备的数据发送给接收设备;
接收设备41,用于接收网关设备发送的结合体文件;接收网关设备发送的合并APK文件中未发送给接收设备的数据;在数据接收完毕得到合并APK文件后,通过运行该合并APK文件将各被合并APK文件释放出来并分别安装和执行。
进一步的,所述网关设备40还用于:
保存单元,用于在获取保存的分解头APK文件的固定数据体之前,读取预先设置的分解头APK文件,将该分解头APK文件分解为固定数据体、固定文件目录结构和可变数据体三部分,并将分解出的三部分分别单独保存;所述固定数据体包括所述分解头APK文件中固定不变的子文件的文件头结构和文件数据体,所述固定文件目录结构包括所述分解头APK文件中固定不变的子文件的文件目录结构;所述可变数据体包括所述分解头APK文件中可变文件的数据。
进一步的,所述网关设备40具体用于:
根据所述待合并APK文件中的数据计算得到所述待合并APK文件的文件头结构,将该待合并APK文件的文件头结构和该待合并APK文件中的数据依次拼接在所述固定数据体的尾部,得到结合体文件。
进一步的,所述网关设备40具体用于:
根据其他待合并APK文件的数据计算得到其他待合并APK文件的文件头结构和文件目录结构,获取保存的所述分解头APK文件的固定文件目录结构,将其他待合并APK文件的文件头结构、其他待合并APK文件的数据、所述固定文件目录结构和其他待合并APK文件的文件目录结构,依次拼接在所述结合体文件的尾部,得到合并ZIP文件;
对所述合并ZIP文件进行签名,形成包含签名文件的合并APK文件。
进一步的,所述网关设备40还用于:
在将所述结合体文件发送给接收设备后,保持与接收设备的网络连接状态;
在将所述合并APK文件中未发送给接收设备的数据发送给接收设备后,关闭与接收设备的网络传输链路。
进一步的,所述接收设备41具体用于:
通过运行该合并APK文件中的分解头APK文件,从所述合并APK文件中读取各被合并APK文件的数据,并将读取的每个被合并APK文件的数据分别转存为一个APK文件;
申请系统管理ROOT权限,在获取到ROOT权限后将转存的各APK文件进行安装和运行。
参见图5,本发明实施例提供一种APK文件的合并传输装置,该装置包括:
获取单元50,用于获取保存的分解头APK文件的固定数据体,所述分解头APK文件是用于安装执行被合并APK文件的APK文件;
第一数据传输单元51,用于在获取到一个待合并APK文件后,生成结合体文件,该结合体文件中包含所述固定数据体、所述待合并APK文件的文件头结构和数据;将该结合体文件发送给接收设备;
第二数据传输单元52,用于在获取到其他待合并APK文件后,基于所述结合体文件生成合并APK文件,该合并APK文件中包含其他待合并APK文件的文件头结构和数据、所述分解头APK文件的固定文件目录结构和各待合并APK文件的文件目录结构、以及签名文件;将所述合并APK文件中未发送给接收设备的数据发送给接收设备。
进一步的,该装置还包括:
保存单元53,用于在获取保存的分解头APK文件的固定数据体之前,读取预先设置的分解头APK文件,将该分解头APK文件分解为固定数据体、固定文件目录结构和可变数据体三部分,并将分解出的三部分分别单独保存;所述固定数据体包括所述分解头APK文件中固定不变的子文件的文件头结构和文件数据体,所述固定文件目录结构包括所述分解头APK文件中固定不变的子文件的文件目录结构;所述可变数据体包括所述分解头APK文件中可变文件的数据。
进一步的,所述第一数据传输单元51具体用于:
根据所述待合并APK文件中的数据计算得到所述待合并APK文件的文件头结构,将该待合并APK文件的文件头结构和该待合并APK文件中的数据依次拼接在所述固定数据体的尾部,得到结合体文件。
进一步的,所述第二数据传输单元52具体用于:
根据其他待合并APK文件的数据计算得到其他待合并APK文件的文件头结构和文件目录结构,获取保存的所述分解头APK文件的固定文件目录结构,将其他待合并APK文件的文件头结构、其他待合并APK文件的数据、所述固定文件目录结构和其他待合并APK文件的文件目录结构,依次拼接在所述结合体文件的尾部,得到合并ZIP文件;
对所述合并ZIP文件进行签名,形成包含签名文件的合并APK文件。
进一步的,所述第一数据传输单元51在将所述结合体文件发送给接收设备后,保持与接收设备的网络连接状态;
所述第二数据传输单元52在将所述合并APK文件中未发送给接收设备的数据发送给接收设备后,关闭与接收设备的网络传输链路。
参见图6,本发明实施例提供一种APK文件的分解运行装置,该装置包括:
第一数据接收单元60,用于接收网关设备发送的结合体文件,该结合体文件中包含分解头APK文件的固定数据体、一个被合并APK文件的文件头结构和数据;所述分解头APK文件是用于安装执行被合并APK文件的APK文件;
第二数据接收单元61,用于接收网关设备发送的合并APK文件中未发送给接收设备的数据,所述合并APK文件中包含其他被合并APK文件的文件头结构和数据、所述分解头APK文件的固定文件目录结构和各被合并APK文件的文件目录结构、以及签名文件;
安装执行单元62,用于在数据接收完毕得到合并APK文件后,通过运行该合并APK文件将各被合并文件释放出来并分别安装和执行。
进一步的,所述安装执行单元62具体用于:
通过运行该合并APK文件中的分解头APK文件,从所述合并APK文件中读取各被合并APK文件的数据,并将读取的每个被合并APK文件的数据分别转存为一个APK文件;
申请系统管理ROOT权限,在获取到ROOT权限后将转存的各APK文件进行安装和运行。
综上,本发明的有益效果包括:
本发明实施例提供的方案中,网关设备在获取到一个待合并APK文件后,生成结合体文件,该结合体文件中包含用于安装执行被合并APK文件的分解头APK文件的固定数据体、该待合并APK文件的文件头结构和数据;网关设备将该结合体文件发送给接收设备;在获取到其他待合并APK文件后,基于该结合体文件生成合并APK文件,该合并APK文件中包含其他待合并APK文件的文件头结构和数据、分解头APK文件的固定文件目录结构和各待合并APK文件的文件目录结构、以及签名文件;将合并APK文件中未发送给接收设备的数据发送给接收设备,接收设备接收结合体文件的数据后,继续接收合并APK文件中未发送给接收设备的数据,在数据接收完毕得到合并APK文件后,通过运行该合并APK文件将各被合并APK文件释放出来并分别安装和执行。可见,本方案中由网关设备将多个待合并APK文件进行合并传输,接收设备得到包含各被合并APK文件数据的合并APK文件后,释放出各被合并APK文件并分别安装执行,从而解决了如何对APK文件进行合并传输和分解的问题。
本发明方案同样可以使用于对已存储的APK文件进行静态合并。采用动态合并的方式,不需要预先处理被合并的APK文件,对网络中传输的任何APK文件都可以实时起效。利用本发明,可以满足一些需要在网络环境下对APK文件进行动态合并的需求。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种安卓安装包APK文件的合并传输方法,其特征在于,该方法包括:
网关设备获取保存的分解头APK文件的固定数据体,所述分解头APK文件是用于安装执行被合并APK文件的APK文件;
网关设备在获取到一个待合并APK文件后,生成结合体文件,该结合体文件中包含所述固定数据体、所述待合并APK文件的文件头结构和数据;将该结合体文件发送给接收设备;
网关设备在获取到其他待合并APK文件后,基于所述结合体文件生成合并APK文件,该合并APK文件中包含其他待合并APK文件的文件头结构和数据、所述分解头APK文件的固定文件目录结构和各待合并APK文件的文件目录结构、以及签名文件;将所述合并APK文件中未发送给接收设备的数据发送给接收设备;
其中,所述基于所述结合体文件生成合并APK文件,具体包括:
网关设备根据其他待合并APK文件的数据计算得到其他待合并APK文件的文件头结构和文件目录结构,获取保存的所述分解头APK文件的固定文件目录结构,将其他待合并APK文件的文件头结构、其他待合并APK文件的数据、所述固定文件目录结构和其他待合并APK文件的文件目录结构,依次拼接在所述结合体文件的尾部,得到合并ZIP文件;
网关设备对所述合并ZIP文件进行签名,形成包含签名文件的合并APK文件。
2.如权利要求1所述的方法,其特征在于,在获取保存的分解头APK文件的固定数据体之前,进一步包括:
网关设备读取预先设置的分解头APK文件,将该分解头APK文件分解为固定数据体、固定文件目录结构和可变数据体三部分,并将分解出的三部分分别单独保存;所述固定数据体包括所述分解头APK文件中固定不变的子文件的文件头结构和文件数据体,所述固定文件目录结构包括所述分解头APK文件中固定不变的子文件的文件目录结构;所述可变数据体包括所述分解头APK文件中可变文件的数据。
3.如权利要求1所述的方法,其特征在于,所述生成结合体文件,具体包括:
网关设备根据所述待合并APK文件中的数据计算得到所述待合并APK文件的文件头结构,将该待合并APK文件的文件头结构和该待合并APK文件中的数据依次拼接在所述固定数据体的尾部,得到结合体文件。
4.如权利要求1-3中任一所述的方法,其特征在于,网关设备在将所述结合体文件发送给接收设备后,保持与接收设备的网络连接状态;
网关设备在将所述合并APK文件中未发送给接收设备的数据发送给接收设备后,关闭与接收设备的网络传输链路。
5.一种APK文件的分解运行方法,其特征在于,该方法包括:
接收设备接收网关设备发送的结合体文件,该结合体文件中包含分解头APK文件的固定数据体、一个被合并APK文件的文件头结构和数据;所述分解头APK文件是用于安装执行被合并APK文件的APK文件;
接收设备接收网关设备发送的合并APK文件中未发送给接收设备的数据,所述合并APK文件中包含其他被合并APK文件的文件头结构和数据、所述分解头APK文件的固定文件目录结构和各被合并APK文件的文件目录结构、以及签名文件;
接收设备在数据接收完毕得到合并APK文件后,通过运行该合并APK文件将各被合并APK文件释放出来并分别安装和执行;
其中,所述通过运行该合并APK文件将各被合并APK文件释放出来并分别安装和执行,具体包括:
通过运行该合并APK文件中的分解头APK文件,从所述合并APK文件中读取各被合并APK文件的数据,并将读取的每个被合并APK文件的数据分别转存为一个APK文件;
申请系统管理ROOT权限,在获取到ROOT权限后将转存的各APK文件进行安装和运行。
6.一种安卓安装包APK文件的合并传输装置,其特征在于,该装置包括:
获取单元,用于获取保存的分解头APK文件的固定数据体,所述分解头APK文件是用于安装执行被合并APK文件的APK文件;
第一数据传输单元,用于在获取到一个待合并APK文件后,生成结合体文件,该结合体文件中包含所述固定数据体、所述待合并APK文件的文件头结构和数据;将该结合体文件发送给接收设备;
第二数据传输单元,用于在获取到其他待合并APK文件后,基于所述结合体文件生成合并APK文件,该合并APK文件中包含其他待合并APK文件的文件头结构和数据、所述分解头APK文件的固定文件目录结构和各待合并APK文件的文件目录结构、以及签名文件;将所述合并APK文件中未发送给接收设备的数据发送给接收设备;
其中,所述第二数据传输单元具体用于:
根据其他待合并APK文件的数据计算得到其他待合并APK文件的文件头结构和文件目录结构,获取保存的所述分解头APK文件的固定文件目录结构,将其他待合并APK文件的文件头结构、其他待合并APK文件的数据、所述固定文件目录结构和其他待合并APK文件的文件目录结构,依次拼接在所述结合体文件的尾部,得到合并ZIP文件;
对所述合并ZIP文件进行签名,形成包含签名文件的合并APK文件。
7.一种APK文件的分解运行装置,其特征在于,该装置包括:
第一数据接收单元,用于接收网关设备发送的结合体文件,该结合体文件中包含分解头APK文件的固定数据体、一个被合并APK文件的文件头结构和数据;所述分解头APK文件是用于安装执行被合并APK文件的APK文件;
第二数据接收单元,用于接收网关设备发送的合并APK文件中未发送给接收设备的数据,所述合并APK文件中包含其他被合并APK文件的文件头结构和数据、所述分解头APK文件的固定文件目录结构和各被合并APK文件的文件目录结构、以及签名文件;
安装执行单元,用于在数据接收完毕得到合并APK文件后,通过运行该合并APK文件将各被合并文件释放出来并分别安装和执行;
其中,所述安装执行单元具体用于:
通过运行该合并APK文件中的分解头APK文件,从所述合并APK文件中读取各被合并APK文件的数据,并将读取的每个被合并APK文件的数据分别转存为一个APK文件;
申请系统管理ROOT权限,在获取到ROOT权限后将转存的各APK文件进行安装和运行。
8.一种安卓安装包APK文件的合并传输及分解运行系统,其特征在于,该系统包括:
网关设备,用于获取保存的分解头APK文件的固定数据体,所述分解头APK文件是用于安装执行被合并APK文件的APK文件;在获取到一个待合并APK文件后,生成结合体文件,该结合体文件中包含所述固定数据体、所述待合并APK文件的文件头结构和数据;将该结合体文件发送给接收设备;在获取到其他待合并APK文件后,基于所述结合体文件生成合并APK文件,该合并APK文件中包含其他待合并APK文件的文件头结构和数据、所述分解头APK文件的固定文件目录结构和各待合并APK文件的文件目录结构、以及签名文件;将所述合并APK文件中未发送给接收设备的数据发送给接收设备;
接收设备,用于接收网关设备发送的结合体文件;接收网关设备发送的合并APK文件中未发送给接收设备的数据;在数据接收完毕得到合并APK文件后,通过运行该合并APK文件将各被合并文件释放出来并分别安装和执行;
其中,所述网关设备具体用于:
根据其他待合并APK文件的数据计算得到其他待合并APK文件的文件头结构和文件目录结构,获取保存的所述分解头APK文件的固定文件目录结构,将其他待合并APK文件的文件头结构、其他待合并APK文件的数据、所述固定文件目录结构和其他待合并APK文件的文件目录结构,依次拼接在所述结合体文件的尾部,得到合并ZIP文件;
对所述合并ZIP文件进行签名,形成包含签名文件的合并APK文件;
相应的,所述接收设备具体用于:
通过运行该合并APK文件中的分解头APK文件,从所述合并APK文件中读取各被合并APK文件的数据,并将读取的每个被合并APK文件的数据分别转存为一个APK文件;
申请系统管理ROOT权限,在获取到ROOT权限后将转存的各APK文件进行安装和运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310600731.5A CN103595814B (zh) | 2013-11-25 | 2013-11-25 | Apk文件的合并传输及分解运行方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310600731.5A CN103595814B (zh) | 2013-11-25 | 2013-11-25 | Apk文件的合并传输及分解运行方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103595814A CN103595814A (zh) | 2014-02-19 |
CN103595814B true CN103595814B (zh) | 2016-09-07 |
Family
ID=50085792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310600731.5A Active CN103595814B (zh) | 2013-11-25 | 2013-11-25 | Apk文件的合并传输及分解运行方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103595814B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648740A (zh) * | 2016-10-18 | 2017-05-10 | 努比亚技术有限公司 | 一种可执行文件的加载方法及终端 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102087605A (zh) * | 2011-01-28 | 2011-06-08 | 宇龙计算机通信科技(深圳)有限公司 | 一种基于android平台应用安装控制方法及系统 |
CN102799445A (zh) * | 2012-05-03 | 2012-11-28 | 陈昊 | 一种基于Android平台的应用升级方法及系统 |
CN103177077A (zh) * | 2013-01-08 | 2013-06-26 | 杭州米加科技有限公司 | 一种apk文件的存储及输出方法 |
-
2013
- 2013-11-25 CN CN201310600731.5A patent/CN103595814B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102087605A (zh) * | 2011-01-28 | 2011-06-08 | 宇龙计算机通信科技(深圳)有限公司 | 一种基于android平台应用安装控制方法及系统 |
CN102799445A (zh) * | 2012-05-03 | 2012-11-28 | 陈昊 | 一种基于Android平台的应用升级方法及系统 |
CN103177077A (zh) * | 2013-01-08 | 2013-06-26 | 杭州米加科技有限公司 | 一种apk文件的存储及输出方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103595814A (zh) | 2014-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9111091B2 (en) | Automatic extraction, modeling, and code mapping of application user interface display screens and components | |
CN105988926B (zh) | 多版本测试数据的处理方法和装置 | |
CN104581397B (zh) | 安卓机顶盒的系统升级方法及装置 | |
JP2009529720A5 (zh) | ||
CN103294485B (zh) | 用于ABINIT并行计算系统的Web服务封装方法以及系统 | |
CN106502646A (zh) | 应用的页面信息处理方法及装置 | |
CN110286927A (zh) | Flutter应用的热更新方法、装置及设备 | |
KR20160058673A (ko) | 웹 기반 운영 체제에서의 주입형 공격을 방지하는 방법 및 장치 | |
CA2698066A1 (en) | System and method for remotely compiling multi-platform native applications for mobile devices | |
CN109194606B (zh) | 攻击检测系统、方法、计算机设备及存储介质 | |
CN104866293B (zh) | 一种对Android应用程序扩展功能的方法及装置 | |
CN104583945A (zh) | 一种应用升级方法、装置 | |
CN111240684B (zh) | 一种js代码的裁剪方法、装置、介质和电子设备 | |
US20140289341A1 (en) | Method of hybrid message passing with shared memory | |
CN106649342A (zh) | 数据采集平台中数据处理的方法及装置 | |
CN103595814B (zh) | Apk文件的合并传输及分解运行方法、装置和系统 | |
CN103294482B (zh) | 用于PWscf并行计算系统的Web服务封装方法以及系统 | |
CN106990988A (zh) | 一种程序更新的方法及装置 | |
CN106371809B (zh) | 线程处理器及线程处理方法 | |
CN109672534A (zh) | 网络资源的处理方法、装置、存储介质和电子装置 | |
CN111967022A (zh) | 安全漏洞修复方法和装置 | |
CN111104216A (zh) | 电子保单的批量处理方法及装置、存储介质及电子设备 | |
CN103139298A (zh) | 一种传输网络数据的方法和装置 | |
CN110505289A (zh) | 文件下载方法及装置、计算机可读介质、无线通信设备 | |
CN109814893A (zh) | Ota升级包的下载方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |