一種Android的多平台的安裝包打包方法探究

來源:互聯網
上載者:User

標籤:android   style   color   使用   io   ar   檔案   問題   sp   

     繼 Google I/O 宣布新系統 Android L 帶來 64 位元支援後,Android NDK 日前正式推出 Revision 10 更新,添加 ARM、x86 和 MISP 架構晶片的 64 位元 ABI 支援。

     因而,全部ABI個數至少達到了8個.如果每個平台的連結庫大小達到10M,加起來就達到了80兆,如果直接安裝進手機,則會浪費手機的寶貴的儲存空間.當然,在雲時代,又有了一種方案,安裝後在從雲端下載,問題又來了,雲端下載下來需要流量或寬頻,同時還要對雲端進行維護,問題也不小.還有一種方案是,各平台獨立打包,獨立打包可以減少安裝包的體積,但是又會引發一個問題,發布的時候顯得混亂,管理上麻煩不斷.

     有沒有更好的辦法?答案是有的,眾所周知,apk就是一個zip檔案,zip檔案可以包含一切檔案.就利用這點來解決.

在apk中,lib存成的各平台的動態連結程式庫,每個平台需且僅需一種.因此,lib中存成各平台的連結庫.我們僅需要多製作幾份簽名就可以了,這樣去簽名,有多少種類型的連結庫就製作多少份簽名,簽名時忽略其他平台的連結庫,然後產生META-INF檔案(.MF,.SF,.RAS).用連結庫所屬的目錄名命名其目錄,如armeabi.再將該目錄放在assets目錄下的META-INFS目錄裡.這樣和以往的APK相比,就多了這個目錄.

assets目錄

|--META-INFS

   |  |-- armeabi

   |  |--armeabi-v7a

   |  |--x86

  .......

-----------------------------------------------

armeabi目錄

  |  |--MANIFEST.MF

  |  |--CERT.SF

  |  |--CERT.RSA

--------------------------

    最後再使用簽名工具,對該安裝包簽名.

     這樣,發布到渠道後,渠道可以將這個多平台的安裝包拆解,當使用者下載APK的某個平台時,後台可以直接將該平台的提取出來,拋棄不必要的,然後打包給使用者下載.當然這需要渠道,應用分發平台的支援才行.

    如果使用者把全平台的都下載下來,也可以直接安裝全平台的安裝包,如果安裝器能識別出可以部分安裝的話,可以將該平台的提取出來,打包後安裝即可.

   當然,裡面還有一個zip對齊問題,其實這個問題很容易解決的.

 

一種Android的多平台的安裝包打包方法探究

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.