Некоторая полезная информация для людей, которые попадают сюда, в этот пост, поскольку есть некоторые вещи, которые изменились в том, как работают расширения apk, а также если вы используете Android Studio для работы библиотек.
ПРИМЕЧАНИЕ 1
Вы больше не можете использовать черновик, так как ссылка для получения файла расширения еще не будет активной. Вы должны сначала загрузить версию в Alpha или Beta с файлом расширения. (добавление файла расширения возможно только из второго apk, который вы загружаете и выше). Поэтому убедитесь, что вы видите файл расширения apk в списке, когда вы нажимаете детали в разделе публикации для разработчиков в разделе APK.
ПРИМЕЧАНИЕ 2
Если вы используете студию Android и хотите использовать библиотеку загрузчика, не просто копируйте имя пакета и java-файлы в каталог src вашего собственного приложения. Импортируйте библиотеку загрузчика в eclipse и выберите экспорт => файлы сборки gradle. После этого вы можете импортировать библиотеку как модуль в Android Studio.
ПРИМЕЧАНИЕ 3
Не уверен в этом, но я также думаю, что необходимо загрузить приложение хотя бы один раз через магазин игр и иметь к нему доступ с учетной записью на тестовом устройстве. Поэтому, если вы работаете с альфа-версией, создайте тестовую группу Google+ и добавьте в нее себя или другие тестовые устройства.
Кстати
С этими библиотеками довольно легко реализовать загрузку расширения apk, просто убедитесь:
ваша деятельность (та, где вы хотите реализовать загрузку пакета расширения, когда загрузка не была выполнена автоматически) реализует IDownloaderClient.
вы настраиваете службу и приемник и настраиваете их в своем манифесте.
BASE64_PUBLIC_KEY в классе обслуживания правильный. Загрузите первый apk => посмотрите Сервисы и API в консоли разработчика под своим приложением => Лицензионный код для этого приложения.
Этот код используется, чтобы узнать, можно ли найти файл расширения на устройстве:
boolean expansionFilesDelivered() {
for (XAPKFile xf : xAPKS) {
String fileName = Helpers.getExpansionAPKFileName(this, xf.mIsMain, xf.mFileVersion);
Log.i(TAG, "Expansion filename " +fileName);
if (!Helpers.doesFileExist(this, fileName, xf.mFileSize, false))
return false;
}
return true;
}
Он использует класс XAPKS, который представляет файл расширения, будь то основной файл или файл исправления, имеющий определенный размер файла (байты) и связанный с версией apk (той, в которой он был впервые добавлен).
private static class XAPKFile {
public final boolean mIsMain; // true
public final int mFileVersion; //example 4
public final long mFileSize; //example 126515695L
// example => main expansion that was first introduced in apk version 4 and is 126515695 bytes in size
XAPKFile(boolean isMain, int fileVersion, long fileSize) {
mIsMain = isMain;
mFileVersion = fileVersion;
mFileSize = fileSize;
}
}
Также довольно легко читать файлы фильмов и другие материалы непосредственно из файла расширения с помощью инструментов zip, предоставленных Google (com.android.vending.zipfile).
Сначала получите файл расширения, используя методы, предусмотренные в библиотеке, пареметры — это целые числа, которые представляют вашу основную версию apk расширения (версию apk, в которую впервые был добавлен нужный вам пакет расширения) и версию apk исправления.
ZipResourceFile expansionFile = APKExpansionSupport.getAPKExpansionZipFile(context, APKX_MAIN_APK, APKX_PATCH_APK);
Видео
Для воспроизведения видео непосредственно из этого zipresourcefile:
AssetFileDescriptor a = expansionFile.getAssetFileDescriptor(pathToFileInsideZip);
Теперь из этого assetsFileDescriptor вы можете получить FileDescriptor и использовать его в своем медиаплеере, правильный синтаксис, чтобы заставить ваш медиаплеер воспроизводить видео, также требует второго и третьего параметра. Будь то начальное смещение и длина, которые вы можете получить из AssetFileDescriptor.
player.setDataSource(a.getFileDescriptor(), a.getStartOffset(), a.getLength());
Другое
Для всех остальных вещей (например, изображений) вы можете просто получить входной поток zipresourcefile:
expansionFile.getInputStream(pathToFileInsideZip);`
ТАКЖЕ убедитесь, что вы не сжимаете видео в zip, чтобы это работало! например, чтобы не сжимать файлы .mp4:
zip -n .mp4 -r zipfile.zip . -x ".*" -x "*/.*"
person
Jordy
schedule
24.09.2014