[发明专利]一种打包APK文件的方法、加载Bundle文件的方法及系统在审
申请号: | 201610149902.0 | 申请日: | 2016-03-16 |
公开(公告)号: | CN107203524A | 公开(公告)日: | 2017-09-26 |
发明(设计)人: | 刘欢;刘文荣;屠寅海 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京国昊天诚知识产权代理有限公司11315 | 代理人: | 黄熊 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 打包 apk 文件 方法 加载 bundle 系统 | ||
技术领域
本申请涉及计算机软件技术领域,尤其涉及一种打包APK文件的方法、加载Bundle文件的方法及系。
背景技术
APK包是Android应用程序的文件格式,通常以.APK作为文件名后缀。APK包本质上是一个zip压缩文件,即APK文件可直接以zip方式读写。APK包中包含应用程序运行所需的二进制代码、UI资源等内容。
Bundle是Android应用中的模块。Bundle可以包含一些二进制代码(classes.dex)和资源文件。Bundle可以动态加载/卸载。Bundle文件通常以zip文件的方式附加在主APK包中。通过Bundle可以将APK将应用程序的功能模块化,封装到独立的可插拔bundle文件,以实现动态添加或移除部分功能。Bundle的二进制代码一般通过DexClassLoader进行动态加载,而Bundle中的资源加载则一般通过反射方式将路径添加到AssetManager。对于包含多种业务的应用程序的APK,可以适用多Bundle架构。可以按照应用程序中的不同业务拆解为不同的Bundle,以利于业务的快速迭代。多Bundle结构也可以加快编译速度和启动速度。
现有技术一般是直接将Bundle的apk文件添加到总APK包中。现有技术的这种Bundle结构的APK中,由于Bundle的代码加载器DexClassLoader和资源加载器AssetManager所支持的文件只兼容非压缩或Zip压缩格式,因此bundle都可以压缩成zip(.apk)文件,代码(classes.dex)和资源(*.xml、*.png等)都是zip文件的个Entry。主APK运行时再将Bundle的路径设置到DexClassLoader和AssetManager。DexClassLoader即“类加载器”,其作用是可动态的读取dex文件,将dex文件中的类加载到虚拟机,从而实现在应用运 行过程中动态执行dex文件中的代码。AssetManager为资源管理器。Android应用打包后,代码和资源是一起打包在APK文件中。应用在运行的过程中,可以通过AssetManager来读取打包在APK中的资源文件。非压缩格式将使得最终的APK文件具有较大的体积。Zip压缩格式所通常采用的Deflate压缩算法压缩率并不高,也导致最终的APK文件具有较大的体积。
较大体积的APK文件,将需要较大的存储空间,并且传输过程需要较长的时间,消耗较大的流量。
发明内容
本申请实施例的目的是提供一种打包APK文件的方法、加载Bundle文件的方法及系,以减少APK文件的体积。
为解决上述技术问题,本申请实施例是这样实现的:
一种打包APK文件的方法,包括:
将Bundle.apk文件解压,得到该apk中的文件;
将所述解压得到的文件以Method=Store的方式打包为Zip文件;
采用LZMA算法将所述打包的Zip文件压缩为7z文件;
将所述压缩得到的7z文件文件添加到总的APK包中。
一种加载如权1所述的打包后的APK文件中Bundle文件的方法,包括:
将主APK中的Bundle文件进行LAMA解压,得到zip格式的Bundle文件;
所述解压得到的zip文件直接被DexClassLoader和AssetManager调用,完成所述Bundle文件的加载。
一种打包APK文件的系统,包括:
解压单元,用于将Bundle.apk文件解压,得到该apk中的文件;
打包单元,用于将所述解压得到的文件以Method=Store的方式打包为Zip文件;
压缩单元,用于采用LZMA算法将所述打包的Zip文件压缩为7z文件;
添加单元,用于将所述压缩得到的7z文件文件添加到总的APK包中。
一种加载如权1所述的打包后的APK文件中Bundle文件的系统,包括:
解压单元,用于将主APK中的Bundle文件进行LAMA解压,得到zip格式的Bundle文件;
加载单元,用于采用DexClassLoader和AssetManager完成对所述解压得到的zip文件的调用,完成所述Bundle文件的加载。
一种打包APK文件的方法,包括:
将Bundle.apk文件解压,得到该apk中的文件;
将所述解压得到的文件采用LZMA算法压缩为7z文件;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610149902.0/2.html,转载请声明来源钻瓜专利网。