android - очень много проблем с библиотекой расширений

мне нужно использовать новую библиотеку расширения 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 ()» на «новый класс [] {MetadataColumns.class, DownloadColumns.class};» .

Я просто не понимаю, почему Google не может просто опубликовать простой API, чтобы отправить на рынок намерение загрузить файл и проверить, все ли в порядке, или предоставить гораздо менее сложную библиотеку. из-за сложности очень трудно найти и исправить их ошибки.

У меня такой вопрос: пробовал ли кто-нибудь еще эту библиотеку, и кто-то еще успешно использовал ее без каких-либо проблем? если это так, пожалуйста, опубликуйте решение...


РЕДАКТИРОВАТЬ: кажется, Google обновил свою библиотеку (до версии 2).

они заявляют о следующих изменениях:

  • Элемент списка
  • Теперь загружается файл исправления.
  • Сотовые устройства теперь поддерживаются с уведомлениями, подобными ICS
  • Проверка CRC (из примера) теперь поддерживает сжатые Zip-файлы
  • Использование отражения удалено для облегчения запутывания
  • Устранена утечка службы
  • Непечатаемый символ удален из ZipResourceFile
  • Незначительные изменения форматирования
  • Дополнительные комментарии и правки к этому файлу

Я проверил его сейчас, и кажется, что они почти готовы.

Единственная ошибка, которую я обнаружил, заключается в том, что если я обновлю файл расширения (и APK, размер файла и 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();
  }
}

17
задан Community 23 May 2017 в 10:34
поделиться