Обработка файлов расширения 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. Потому что я не хотел трогать файл расширения. Поэтому значение в провайдере и Downloader Activity по-прежнему было 7.

Я загрузил новый файл APK и больше не выбирал загруженный файл расширения APK. Но это не сработало. После того, как Пользователи обновились до новой версии, видеофайлы в приложении больше не доступны.

Поэтому я снова загрузил файл APK и повторно загрузил файл расширения APK, и это работает. Но это очень странно, потому что пользователю приходится скачивать расширения для каждого отдельного обновления.

Мой вопрос: когда я загружаю новый apk в консоль Google Play, мне всегда нужно выбирать сохраненный файл расширения apk или повторно загружать его снова? Отличается ли поведение файлов расширения APK в бета-версии и обновленной версии?

В следующем сообщении Обновление APK в Google Play без изменения файла расширения он говорит, что такое поведение происходит только в черновом режиме, но мое приложение не находится в черновом режиме. Он опубликован в виде бета-версии.

Я был бы очень благодарен за вашу помощь.


person Deno Agüero    schedule 18.10.2017    source источник


Ответы (1)


Вы должны загрузить оба файла, так как это обычный способ.

Каждый раз, когда вы загружаете APK с помощью Google Play Console, у вас есть возможность добавить в APK один или два файла расширения. Каждый файл может иметь размер до 2 ГБ и может быть любого формата, который вы выберете, но мы рекомендуем вам использовать сжатый файл для экономии полосы пропускания во время загрузки. Концептуально каждый файл расширения играет свою роль:

Основной файл расширения — это основной файл расширения для дополнительных ресурсов, необходимых вашему приложению. Файл расширения исправления является необязательным и предназначен для небольших обновлений основного файла расширения. Хотя вы можете использовать два файла расширения по своему усмотрению, мы рекомендуем, чтобы основной файл расширения предоставлял основные активы и редко обновлялся, если вообще когда-либо; файл расширения исправления должен быть меньше и служить «носителем исправления», обновляясь с каждым основным выпуском или по мере необходимости.

Однако даже если для обновления вашего приложения требуется только новый файл расширения исправления, вы все равно должны загрузить новый APK с обновленным кодом версии в манифесте. (Play Console не позволяет загружать файл расширения в существующий APK.)

Примечание. Файл расширения исправления семантически идентичен основному файлу расширения — вы можете использовать каждый файл по своему усмотрению. Система не использует файл расширения исправления для исправления вашего приложения. Вы должны выполнить исправление самостоятельно или уметь различать два файла.

Более подробную информацию можно найти здесь https://developer.android.com/google/play/expansion-files.html

person Muhammad Saad Rafique    schedule 25.10.2017
comment
Спасибо за ваш ответ. Я понимаю концепцию основного файла и файла расширения исправления, и мне нужен только основной файл. Мой основной файл расширения никогда не изменится, и вопрос в том, должен ли я каждый раз загружать его с новым номером версии, если я обновляю только apk? Поэтому мне придется всегда увеличивать значение провайдера в моем манифесте и в действии загрузчика, чтобы оно соответствовало коду версии. Поэтому пользователь должен загружать большой файл для каждого обновления. Я не думаю, что это правильный путь. - person Deno Agüero; 04.11.2017