close

因工作需求,Study 如何上傳超過 50MB 的 APK 至 Google Play 讓使用者可以下載,心得如下:

Refs: http://developer.android.com/google/play/expansion-files.html

  1. Ggoole Play 讓你上傳 2 個額外的檔案以支援 APK,稱之為 expansion files。
  2. Expansion files 會被下載到裝置的外部儲存空間,通常會連 APK 一起被下載,但在某些其況下你的程式需要自行處理下載檔案。

 

Overview

  1. 每當你從 Google Play Developer Console 上傳 APK 時,Google Play 會有兩個選擇性的欄位,讓你選擇是否上傳 expansion files。
  2. 每一筆 expansion file 的 size 可以達到 2GB,並且可以是任意格式。
  3. 兩筆 expansion file 各自代表不同角色:
    1. main expansion file: 放置 size 較大,並比較少會變動的 resources。
    2. patch expansion file: 放置 size 較小,並可能常隨程式版本更新的 resources。
  4. 即使你此次只欲更新 expansion file,你仍必須上傳一個新的 APK,包含新的 version code。

 

File name format

  1. 你可以選擇使用任何格式去包裝你的 expansion file (ZIP, PDF, MP4, etc)
  2. 你也可以使用 JOBB 工具去包裝並加密你的 resources file。
  3. 不管你選擇哪種 file type,Google 會幫你 rename 成以下格式:

    [main|patch].<expansion-version>.<package-name>.obb

    • main or patch:顯示為 main 或 patch expansion file。
    • <expansion-version>:此為第一個上傳 expansion file 時的 APK 的 version code,即使未來你有可能再更新 expansion file,expansion file name 不會再改變。
    • <package-name>:程式的 package name。

 

Storage location

  1. 當從 Google Play 下載 expansion file 時,它會被儲存在裝置的外部儲存空間:

    <shared-storage>/Android/obb/<package-name>

    • <shared-storage>:外部儲存空間的位址,可由 getExternalStorageDirectory() 取得。
    • <package-name>:程式的 package name。

     

  2. 請勿移動、修改、刪除外部儲存空間的 .obb 檔的 expansion file,若你必須對其做 unpack 動作,請將 unpack 後的檔案儲存在呼叫 getExternalFilesDir() 所得到的位置。
  3. 更好的方法是,不須對檔案做 unpack 的動作,透過 Android 提供的 APK Expansion Zip Library (#ZipLib),直接存取 ZIP 格式的檔案。
  4. 注意,不像 APK files,expansion files 是可被任意的 Application 所存取的。
  5. 若你使用 zip 工具,可以下 -n 參數針對某些 suffixes 的膽案不做壓縮的動作,例如:
    zip -n .mp4; .ogg main_expansion media_files

 

Download process

  1. 在大部分的情形下,Google Play 會下載 APK 的同時一併下載並儲存 expansion file,但是在某些狀況下 Google Play 無法成功下載 expansion file,或者 user 自己將 expansion file 刪除了,你的程式必須要有能力去 handle 這樣的情形。
  2. 下載 expansion file 之流程如下:
    1. User 從 Google Play 下載你的 App。
    2. 在大部分的狀況下,Google Play 下載你的 APP 時會一併下載 expansion file。
    3. 下載完成,當 user 開啟你的 app,程式必須去檢查 expansion file 是否已經正確被下載到裝置上。
      1. 如果是,程式可以繼續執行。
      2. 如果否,你的程式必續自行透過 HTTP 從 Google Play 下載 expansion file,透過 GooglePlay 的 Application Licensing services 對 Google Play 發出要求,Google Play 會回傳每個 expansion file 的 name、file size、URL等資訊,你可以利用這些資訊,將 expansion file 儲存到適合的位置。
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 擒猿小舖 的頭像
    擒猿小舖

    擒猿小舖

    擒猿小舖 發表在 痞客邦 留言(0) 人氣()