[發明專利]一種打包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.szxzyx.cn/pat/books/201610149902.0/2.html,轉載請聲明來源鉆瓜專利網。





