Мне нужно использовать новую библиотеку расширения google-play (или рынка), и мне сложно с ней работать. я задаюсь вопросом, использует ли кто-нибудь еще его и замечает те же проблемы, которые я вижу, поэтому я был бы очень рад, если бы вы могли помочь исправить их:
1. Иногда я не получаю важные события (например, ошибки) обратно к активности загрузчика.
2.it не работает вообще на некоторых устройствах, таких как xoom. я думаю, я исправил это: Загрузить файлы расширений на планшете
3. Даже для идентичных устройств можно загрузить файл, а другой может всегда получать ошибку соединения. для некоторых устройств он никогда не сможет скачивать (даже не-корневые устройства, у которых есть приложение для игры в Google).
4.После завершения загрузки файл может быть поврежден, поэтому мне нужно снова проверить CRC и повторно загрузить все.
5.notification иногда открывает несколько экземпляров активности загрузчика при нажатии. Кроме того, я не понимаю, почему они оставляют уведомление в случае, если активность все еще отображается.
6. При возникновении ошибки и последующей обработке она не ждет, пока пользователь скажет ей возобновить. я не уверен, в каких случаях это происходит, но это действительно странно и непредсказуемо.
7.upon, оставляя активность загрузчика, я получаю исключение из протекающей службы.
8. запутывание приложения с помощью функции 8.upout происходит сбой из-за операций SQL, выполняемых через библиотеку. как и почему? EDIT: это потому, что Google решил сделать некоторые операции отражений на части SQL (в файле "DownloadsDB.java" ). чтобы исправить это, я попытался установить proguard, чтобы игнорировать всю библиотеку (она все равно открыта), но это не сработало, поэтому я сделал, чтобы дать классы, которые он хочет сам, так что я заменил "DownloadsDB.class.getDeclaredClasses()" на "новый класс [] {MetadataColumns.class, DownloadColumns.class};.
Я просто не понимаю, почему Google не мог просто опубликовать простой API, чтобы отправить намерение на рынок загрузить файл и проверить, нормально ли оно, или предоставить гораздо менее сложную библиотеку. из-за сложности, очень сложно найти и исправить свои ошибки.
Мой вопрос: кто-нибудь еще пробовал эту библиотеку, и кто-то еще успешно использовал его без каких-либо проблем? если это так, пожалуйста, опубликуйте решение...
EDIT: похоже, Google обновила свою библиотеку (до версии 2).
они заявляют о следующих изменениях:
- Элемент списка
- Патч файл теперь загружается.
- Сотовые устройства теперь поддерживаются уведомлениями, подобными ICS
- Проверка CRC (из примера) теперь поддерживает сжатые Zip файлы
- Использование снятого отражения для облегчения обфускации
- Устранена утечка службы
- Непечатаемый символ удаляется из ZipResourceFile
- Незначительные изменения форматирования.
- Дополнительные комментарии и изменения к этому файлу
Я протестировал его сейчас, и кажется, что они почти там.
Единственная ошибка, которую я обнаружил, заключается в том, что если я обновляю файл расширения (и APK & filesize & CRC), загрузка начинается, но она не удаляет старый файл расширения.
также в уведомлении отображается текущее время, а не все, что может быть связано с загрузкой.
так как у меня есть только одно расширение, я делаю следующую проверку каждый раз, когда я получаю состояние STATE_COMPLETED из службы. я надеюсь, что у него нет других проблем:
private void deleteOldExpansionFile()
{
int fileVersion = 0;
final int versionCode = App.getAppVersionCode(DownloaderActivity.this);
fileVersion = versionCode;
final String fileName = Helpers.getExpansionAPKFileName(this, true, fileVersion); //get the expansion file name based on the build version of the app.
final File newFile = new File(Helpers.generateSaveFileName(this, fileName));
final File[] listFiles = newFile.getParentFile().listFiles();
for (final File file:listFiles)
{
final String name = file.getName();
if (name.startsWith(fileName))
continue;
file.delete();
}
}