Автор работы: Пользователь скрыл имя, 03 Января 2014 в 14:41, практическая работа
Google Play в настоящее время требует, чтобы размер APK файлов был не больше 50 Мб. Для большинства приложений этого достаточно. Тем не менее, некоторые приложения содержат графику высокой точности, медиа-файлы и другие крупные объекты. Раньше, если приложение превышало 50 Мб, необходимо было загружать дополнительные ресурсы самостоятельно после открытия приложения. Хостинг и обслуживание этих файлов может быть дорогостоящим. Чтобы сделать процесс более легким и удобным для пользователей, Google Play позволяет подключить два больших файла расширения, которые дополняют APK файл.
Введение…………………………………………………………………………...3
1. Общая информация об использовании .obb файлов…………………..4
2. Особенности загрузки файлов…………………………………………..6
3. Реализация загрузки файлов………………………………………..….11
4. Получение имени файла………………………………….……………14
5. Использование APK Expansion Zip Library……………………..…….16
Заключение……………………………………………………………………….17
// Start the download service (if required)
int startResult
= DownloaderClientMarshaller.
pendingIntent, SampleDownloaderService.class)
// If download has started, initialize this activity to show download progress
if (startResult
!= DownloaderClientMarshaller.NO_
// This is where you do set up to display the download progress (next step)
...
return;
} // If the download wasn't necessary, fall through to start the app
}
startApp(); // Expansion files are available, start the app
}
IStub обеспечивает связь между вашей
Activity и службой загрузки, Activity получает
отклики о ходе загрузки. Рекомендуется
вызывать CreateStub() для создания
экземпляра IStub в функции OnCreate(), после
того как startDownloadServiceIfRequired
// Start the download service (if required)
int startResult = DownloaderClientMarshaller.
pendingIntent, SampleDownloaderService.class)
// If download has started, initialize activity to show progress
if (startResult != DownloaderClientMarshaller.NO_
// Instantiate a member instance of IStub
mDownloaderClientStub = DownloaderClientMarshaller.
SampleDownloaderService.class)
// Inflate layout that shows download progress
setContentView(R.layout.
return;
}
@Override
protected void onResume() {
if (null != mDownloaderClientStub) {
mDownloaderClientStub.connect(
}
super.onResume();
}
@Override
protected void onStop() {
if (null != mDownloaderClientStub) {
mDownloaderClientStub.
}
super.onStop();
}
Файлы расширения APK были сохранены с использованием формата:
[main|patch].<expansion-
Для получения местонахождения и имен файлов расширения, необходимо использовать getExternalStorageDirectory() и getPackageName() для построения пути к файлам:
// The shared path to all app expansion files
private final static String EXP_PATH = "/Android/obb/";
static String[] getAPKExpansionFiles(Context ctx, int mainVersion, int patchVersion) {
String packageName = ctx.getPackageName();
Vector<String> ret = new Vector<String>();
if (Environment.
// Build the full path to the app's expansion files
File root = Environment.
File expPath = new File(root.toString() + EXP_PATH + packageName);
// Check that expansion file path exists
if (expPath.exists()) {
if ( mainVersion > 0 ) {
String strMainPath = expPath + File.separator + "main." +
mainVersion + "." + packageName + ".obb";
File main = new File(strMainPath);
if ( main.isFile() ) {
ret.add(strMainPath);
}
}
if ( patchVersion > 0 ) {
String strPatchPath = expPath + File.separator + "patch." +
mainVersion + "." + packageName + ".obb";
File main = new File(strPatchPath);
if ( main.isFile() ) {
ret.add(strPatchPath);
}
}
}
}
String[] retArray = new String[ret.size()];
ret.toArray(retArray);
return retArray;
}
Пакет расширений содержит
библиотеку APK Expansion Zip Library (расположенную
в <sdk>/extras/google/google_
// Get a ZipResourceFile representing a merger of both the main and patch files
ZipResourceFile expansionFile
= APKExpansionSupport.
mainVersion, patchVersion);
// Get an input stream for a known file inside the expansion file ZIPs
InputStream fileStream = expansionFile.getInputStream(
Этот код предоставляет доступ к любому файлу, который существует в главной или patch файлах расширения, путем чтения и обоих файлов.
ЗАКЛЮЧЕНИЕ
В рамках расчетно-графической работы были рассмотрены инструменты для создания и использования *.obb файлов для хранения и дистрибуции больших объемов данных приложениями Android.
Каждый раз, когда загружаете APK с помощью Google Play Android Developer Console, у вас есть возможность добавить один или два файла расширения. Каждый файл может быть до 2 Гб и иметь любой формат, но рекомендуется использовать сжатый файл для отображения полосы загрузки.
Были использованы библиотеки, входящие в состав SDK. Они позволяют скачивать файлы расширения в фоновом режиме, показывает пользователю уведомления о состоянии загрузки, потери подключения к сети, возобновляет загрузку и т. д.
Библиотека APK Expansion Zip Library помогает читать сжатые файлы, когда они сохранены как ZIP файлы.
Информация о работе Создание и использование *.obb файлов приложениями android