Мне нужно использовать новую библиотеку расширения google-play (или market), и мне тяжело с ней работать.
Интересно, если кто-то еще использует это и замечает те же проблемы, которые я вижу, поэтому я был бы очень рад, если бы вы могли помочь исправить их:
1. Иногда я не получаю важные события (например, ошибки) обратно к активности загрузчика.
2.Это не работает вообще на некоторых устройствах, таких как xoom. Я думаю, что я исправил это:
Загрузка файлов расширения на планшет
3. Даже для идентичных устройств один может загрузить файл, а другой всегда может получить ошибку соединения. для некоторых устройств загрузка никогда не будет возможна (даже для устройств без рута, на которых установлено приложение google-play).
4.После завершения загрузки файл может быть поврежден, поэтому мне нужно использовать проверку CRC и заново загрузить все заново.
5.Notification иногда открывает несколько экземпляров активности загрузчика при нажатии на него. кроме того, я не понимаю, почему они позволяют уведомлению оставаться в том случае, если активность все еще отображается.
6.Когда ошибка возникает и обрабатывается позже, пользователь не ждет, пока она возобновит работу. Я не уверен, в каких случаях это происходит, но это действительно странно и непредсказуемо.
7. При выходе из загрузчика я получаю исключение из службы утечки.
8.При запутывании приложения происходит сбой из-за операций SQL, выполняемых через библиотеку. как и почему это?
РЕДАКТИРОВАТЬ: это потому, что Google решил сделать некоторые операции отражения на части SQL (в файле "DownloadsDB.java"). чтобы исправить это, я попытался настроить proguard на игнорирование всей библиотеки (в любом случае, она с открытым исходным кодом), но это не сработало, поэтому я сам дал классы, которые он хочет, поэтому я заменил "DownloadsDB.class.getDeclaredClasses ()" на "new Class [] {MetadataColumns.class, DownloadColumns.class};" .
Я просто не понимаю, почему Google не мог просто опубликовать простой API, чтобы отправить на рынок намерение загрузить файл и проверить, все ли в порядке, или предоставить гораздо менее сложную библиотеку. из-за сложности очень трудно найти и исправить их ошибки.
мой вопрос: кто-нибудь еще пробовал эту библиотеку, и кому-то еще удалось без проблем использовать ее? если да, опубликуйте решение ...
РЕДАКТИРОВАТЬ: кажется, 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();
}
}