close
因工作需求,Study 如何上傳超過 50MB 的 APK 至 Google Play 讓使用者可以下載,心得如下:
Refs: http://developer.android.com/google/play/expansion-files.html
- Ggoole Play 讓你上傳 2 個額外的檔案以支援 APK,稱之為 expansion files。
- Expansion files 會被下載到裝置的外部儲存空間,通常會連 APK 一起被下載,但在某些其況下你的程式需要自行處理下載檔案。
Overview
- 每當你從 Google Play Developer Console 上傳 APK 時,Google Play 會有兩個選擇性的欄位,讓你選擇是否上傳 expansion files。
- 每一筆 expansion file 的 size 可以達到 2GB,並且可以是任意格式。
- 兩筆 expansion file 各自代表不同角色:
- main expansion file: 放置 size 較大,並比較少會變動的 resources。
- patch expansion file: 放置 size 較小,並可能常隨程式版本更新的 resources。
- 即使你此次只欲更新 expansion file,你仍必須上傳一個新的 APK,包含新的 version code。
File name format
- 你可以選擇使用任何格式去包裝你的 expansion file (ZIP, PDF, MP4, etc)
- 你也可以使用 JOBB 工具去包裝並加密你的 resources file。
- 不管你選擇哪種 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
- 當從 Google Play 下載 expansion file 時,它會被儲存在裝置的外部儲存空間:
<shared-storage>/Android/obb/<package-name>
- <shared-storage>:外部儲存空間的位址,可由 getExternalStorageDirectory() 取得。
- <package-name>:程式的 package name。
- 請勿移動、修改、刪除外部儲存空間的 .obb 檔的 expansion file,若你必須對其做 unpack 動作,請將 unpack 後的檔案儲存在呼叫 getExternalFilesDir() 所得到的位置。
- 更好的方法是,不須對檔案做 unpack 的動作,透過 Android 提供的 APK Expansion Zip Library (#ZipLib),直接存取 ZIP 格式的檔案。
- 注意,不像 APK files,expansion files 是可被任意的 Application 所存取的。
- 若你使用 zip 工具,可以下 -n 參數針對某些 suffixes 的膽案不做壓縮的動作,例如:
zip -n .mp4; .ogg main_expansion media_files
Download process
- 在大部分的情形下,Google Play 會下載 APK 的同時一併下載並儲存 expansion file,但是在某些狀況下 Google Play 無法成功下載 expansion file,或者 user 自己將 expansion file 刪除了,你的程式必須要有能力去 handle 這樣的情形。
- 下載 expansion file 之流程如下:
- User 從 Google Play 下載你的 App。
- 在大部分的狀況下,Google Play 下載你的 APP 時會一併下載 expansion file。
- 下載完成,當 user 開啟你的 app,程式必須去檢查 expansion file 是否已經正確被下載到裝置上。
- 如果是,程式可以繼續執行。
- 如果否,你的程式必續自行透過 HTTP 從 Google Play 下載 expansion file,透過 GooglePlay 的 Application Licensing services 對 Google Play 發出要求,Google Play 會回傳每個 expansion file 的 name、file size、URL等資訊,你可以利用這些資訊,將 expansion file 儲存到適合的位置。
全站熱搜
留言列表