2017-10-18 131 views
9

前段時間,我發佈了我的應用的測試版,並將其與APK擴展文件關聯起來。然後,我想更新我的APK,而不觸及文件,並做了以下操作:在測試版和發佈版本中處理APK擴展文件

我的應用程序的版本代碼是7,提供程序也有此值。提供者看起來像我的清單如下:

<provider 
    android:name=".expansion.MyApezProvider" 
    android:authorities="com.bla.blabla" 
    android:exported="false" 
    android:multiprocess="true" 
> 
    <meta-data 
     android:name="mainVersion" 
     android:value="7"> 
    </meta-data> 
</provider> 

這裏是我的下載活動的一個片段:

private static final XAPKFile[] xAPKS = {new XAPKFile(true, // true signifies a main file 
     7, // the version of the APK that the file was uploaded 
     383989643L // the length of the file in bytes 
)}; 

我只增加清單中的版本代碼值7〜8。因爲我不想觸摸擴展文件。因此,提供商和下載程序活動中的值仍然爲7.

我已經上傳了新的APK文件,但沒有再次選擇上傳的APK擴展文件。但是這不起作用。用戶更新到新版本後,應用程序中的視頻文件不再可用。

因此,我再次上傳了APK文件,然後重新上傳APK擴展文件,並且工作正常。但這很奇怪,因爲用戶必須爲每一次更新下載擴展。

我的問題是:當我將新apk上傳到Google Play控制檯時,是否必須始終選擇存儲的apk擴展文件或重新上傳它? APK擴展文件的行爲在beta和relased版本中有所不同嗎?

在以下帖子Updating an APK in Google Play without changing the expansion file它說,這種行爲只發生在草稿模式,但我的應用程序不是草稿模式。它是已發佈作爲測試版。

我會非常感謝您的幫助。

回答

2

您必須上傳兩個文件,因爲這是正常的方式。

每次使用Google Play控制檯上傳APK時,都可以選擇將一個或兩個擴展文件添加到APK中。每個文件可以達到2GB,並且可以是您選擇的任何格式,但我們建議您在下載過程中使用壓縮文件來節省帶寬。從概念上講,每個擴展文件扮演不同的角色:

主擴展文件是您的應用程序所需的其他資源的主擴展文件。 補丁擴展文件是可選的,用於主擴展文件的小型更新。 雖然您可以以任何方式使用這兩個擴展文件,但我們建議主擴展文件提供主資源,並且應該很少更新;補丁擴展文件應該更小,並作爲「修補程序載體」,隨每個主要版本或必要時更新。

但是,即使您的應用程序更新只需要一個新的補丁擴展文件,您仍然必須在清單中上載帶有更新的versionCode的新APK。 (Play控制檯不允許您將擴展文件上傳到現有的APK。)

注意:補丁擴展文件在語義上與主擴展文件相同 - 您可以使用任何您想要的方式使用每個文件。系統不使用修補程序擴展文件爲您的應用程序修補。您必須自己修補或者能夠區分這兩個文件。

您可以在這裏找到更多詳細信息https://developer.android.com/google/play/expansion-files.html

+0

謝謝你的回答。我正在理解主要和補丁擴展文件的conecpt,我只需要主文件。我的主擴展文件永遠不會改變,問題是:如果我只更新apk,我是否每次都必須使用新版本號上傳它?所以我將不得不在我的清單和下載器活動中增加提供者的值以匹配版本代碼。因此用戶必須下載每個更新的大文件。我不認爲這是正確的方法。 –