APK擴展文件

Android平臺每個APK文件的最大限制是50MB。如果您的程序中包含大量的數據文件,以前您只能把這些數據文件放到自己的服務器上,當用戶啓動程序的時候讓用戶去下載。現在這些數據文件可以直接上傳到Android Market了。在新的Market控制檯上傳App的時候,可以添加擴展文件了。

下面就來看看什麼時候該使用擴展文件,該如何使用?

每個APK可以有2個擴展文件,每個文件最大限制是2GB。爲了減少用戶的帶寬消耗,最好使用壓縮格式文件吧。 這兩擴展文件具有不同的用途:
第一個被稱爲 main (主)擴展文件,該擴展文件保護您程序中需要用到的附加數據;
第二個被稱爲 patch 擴展(修補)文件,該文件是可選的,並且應該只包含一些不同版本的補丁數據。

當然您可以按照您需要的方式來使用這兩個擴展文件,不過Android官方還是推薦把這兩個文件的功能分開。main擴展文件包含核心數據,並且儘量不隨程序版本的升級去修改;而patch擴展文件可以隨程序版本的升級做修改。爲了幫助大家理解具體的含義,我們使用一個地圖App來解釋下:
比如 Google 地圖程序需要包含一個離線地圖數據包,這樣可以方便用戶離線查看地圖,在程序發佈的時候,可以把現有的離線數據包作爲main擴展文件上傳到Market。 然後過了半年Google地圖更新了,新添加了一些剛剛修好的高速公路、新建立的商場 等信息,可以把這些新增的信息作爲patch擴展文件使用。 這樣Google 地圖 1.0版本對應一個main擴展文件;而Google地圖1.1版本對應一個main擴展文件和一個1.1版本的patch擴展文件;Google地圖1.2版本對應一個main擴展文件和一個1.2版本的patch擴展文件。 這裏面的main擴展文件是同一個文件而patch擴文件是隨版本變化的。
這樣的好處就是當程序升級的時候, 用戶不用重新下載main擴展文件了,只需要下載少量的新增文件即可,節省用戶流量。

擴展文件的命名格式

擴展文件可以使用任何文件格式(ZIP, PDF, MP4, 等)。不管任何文件格式Android都認爲他們是obb(opaque binary blobs)文件,並且會根據如下文件命名規則來重命名擴展文件:
[main|patch].<expansion-version>.<package-name>.obb

main or patch
指定文件是main擴展文件還是patch擴展文件,每個APK只能有一個main擴展文件和一個patch擴展文件。

<expansion-version>
和第一次上傳該擴展文件的APK文件的android:versionCode一致。後續版本的APK可以重用前面上傳的擴展文件。
您程序的Java包名

<package-name>
例如程序的版本爲5,程序的包名爲org.goodev.expansion.downloader。則上傳的main擴展文件會被重命名爲:
main.5.org.goodev.expansion.downloader.obb

擴展文件的保存位置

當Android Market下載程序的擴展文件的時候會保存到系統的共享存儲區。爲了確保程序正常運行,您不能刪除、移動或者重命名擴展文件。在某些設備上Market無法自動下載該擴展文件,那麼您應該在程序啓動的時候去下載該文件並且保存到同樣的位置。
擴展文件保存位置如下:
<shared-storage>/Android/obb/<package-name>/

<shared-storage> 代表共享文件的目錄路徑,通過函數getExternalStorageDirectory()獲取;
<package-name> APK的Java包名。
對於每個App而言,該目錄下最多隻能包含2個擴展文件。一個是main擴展文件另外一個是patch擴展文件。當更新程序的時候,如果有新的擴展文件則新文件會覆蓋舊的擴展文件。

如果您需要解壓縮擴展文件來使用,請注意不要刪除該.obb文件,並且也不要把文件解壓縮到該目錄。您應該把解壓縮後的文件保存到getExternalFilesDir()返回的目錄下面。如果有可能的話,最好使用程序能直接讀取的文件格式而不用再次解壓縮文件了。Android開發團隊提供了一個項目( APK Expansion Zip Library)可以直接讀取ZIP文件中的內容而不用解壓縮該文件.
需要注意的是:保存在系統共享存儲區的文件,用戶和其他APP也可以訪問。

下載擴展文件的流程

在大多數情況下,Market會在下載APK的同時去下載擴展文件。然而,在某些情況下Market無法下載擴展文件或者用戶刪除了以前下載的擴展文件,您的程序需要處理這種異常情況。當您的程序啓動的時候,可以檢測文件是否存在並且可以從Market上下載。

開發者檢查清單

您可以通過下面的清單來檢查是否需要使用擴展文件

  • 1. 您的程序是否真的需要超過50MB的大小限制。在移動設備上空間是非常寶貴的,您應該儘可能減少App的大小。如果您僅僅是爲了提供支持多種顯示設備的圖片資源的話,可以考慮使用發佈多個APK的方式來減少每個APK的大小。
  • 2.判斷哪些數據需要打包爲擴展文件發佈。
  • 3.在程序中添加訪問共享存儲區中擴展文件的代碼
  • 4.在程序的啓動Activity中添加檢測擴展文件是否存在,以及下載擴展文件的代碼

擴展文件的規則和限制

  • 1.每個擴展文件最大爲2GB
  • 2.用戶必需要從Android Market獲取您的程序才能自動從Market中下載擴展文件
  • 3.當在您的程序中下載擴展文件的時候,Market每次都會爲每個文件生成一個唯一的下載URL,該URL會在短期內失效。
  • 4.當你上傳一個新的APK的時候,可以選擇使用以前上傳的擴展文件
  • 5.如果您使用多個APK文件來適配不同的設備,並且也希望使用多個擴展文件。爲了獲取一個唯一的versionCode和不同的Market filter, 您需要分別爲每個設備上傳不同的APK文件。
  • 6. 不能通過更新擴展文件來發佈一個新的版本。
  • 7. 不要在obb/文件夾中保存其他數據
  • 8.不要刪除或者重命名.obb文件

在下一篇文章中 將通過一個示例介紹如何在程序中使用擴展文件。



原文轉載自 雲在千峯:http://yunfeng.sinaapp.com/?p=342#ixzz1oKcXtA2c
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章