最近在調查APK Expansion Files的使用方法,在此過程中遇到不少問題,在此做一個總結
重要參考資料:
Thank you very much
利用官方示例測試時候需要修改的地方
1 程式的包名即manifest中的package.否則無法上傳
2 将SampleDownloaderService中的BASE64_PUBLIC_KEY替換為自己的
3 将org.goodev.expansion.downloader.SampleDownloaderActivity中的xAPKS
修改為自己的.注意此處的大小請以本地obb檔案大小為準.不要以上傳Google play
後網頁顯示的obb大小為準
Bug描述及其修改:
1 在運作示例代碼時程式崩潰,發現是mRemoteService為空,服務沒有啟動
以下資料亦提到該問題但是沒有給出解答
解決方式:
在DownloaderClientMarshaller類中
即com.google.android.vending.expansion.downloader.DownloaderClientMarshaller類中的
public void connect(Context c)()方法中:
應該使用if ( !c.bindService(bindIntent, mConnection, Context.BIND_AUTO_CREATE) )
而不是:
if ( !c.bindService(bindIntent, mConnection, Context.BIND_DEBUG_UNBIND) )
2 在修改以上bug後程式不會崩潰,但是沒有執行下載下傳.
發現APK Expansion Files中的幾個服務均隻執行了create()卻沒有執行commandStart()
解決辦法:
具體代碼:
在方法:
com.google.android.vending.expansion.downloader.impl.DownloaderService.startDownloadServiceIfRequired()
應該把:
String packageName = serviceClass.getPackage().getName();
改成
String packageName = context.getPackageName();
其餘問題:
1 裝置需要支援谷歌服務,比如你采用國産的oppo手機運作時會産生證書問題
2 第一次上傳apk的時候是無法上傳obb檔案的.隻有在第二次及其以後上傳apk
時才有上傳obb檔案的選項.
參考資料:
3 上傳obb檔案不能立馬測試.需要等待一段時間
殘留問題:
通過以上的準備和修改已經可以下載下傳obb檔案,但是進度條等UI資訊的顯示不正常.
參考資料:
改問題還未解決,需要進一步的調查.
關于APK Expansion Files的其餘疑似bug和問題可以參閱:
<a target="_blank" href="http://code.google.com/p/android/issues/detail?id=30767">http://code.google.com/p/android/issues/detail?id=30767</a>