Android: сбой, потому что класс Java не найден - PullRequest
0 голосов
/ 01 апреля 2019

Моя цель - сделать так, чтобы мой Android-телевизор Mi Box S (Oreo 8.1) правильно транскодировал звуки Dolby Digital + (EAC3) в Dolby Digital (AC3) и выводил их на мой AVR через SPDIF.

Этот transcodindg возможен с приложением Kodi 18.1, но не предлагается другими настройками приложения или Android 8.1.Поскольку Kodi может это сделать, я реверс-проектировал стек Android.Мой вывод таков: - Android Oreo встраивает любые необходимые кодеки и другие вещи для этого транскодирования, но не предлагает настройки для настройки этого - Android Pie предлагает желаемую настройку объемного звучания (вывод Dolby Digital на SPDIF)

ИтакМоя цель - перенести приложение Android TvSettings из Pie в Oreo

. Сначала я попытался сгенерировать TvSettings с помощью Android Studio.Я взломал ресурсы приложения, но остановился, когда понял, что мне нужно создать платформенные зависимости (например, SettingsLib.jar)

Моя вторая попытка - сгенерировать всю платформу Android.Сборка завершена, и я могу развернуть приложение TvSettings на ТВ-моделировании x86, НО, когда я запустил приложение TvSettings, я получаю эту ошибку:

--------- начало сбоя

2019-04-01 12: 21: 04.976 3987-3987 / com.android.tv.settings E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной процесс: com.android.tv.settings, PID: 3987 java.lang.RuntimeException: невозможно получить поставщика android.support.v4.content.FileProvider: java.lang.ClassNotFoundException: не найден класс «android.support.v4.content.FileProvider» по пути: DexPathList [[файл zip »/ data /app / com.android.tv.settings-2DkaCncwGQ874WP-kx3G4Q == / base.apk "], nativeLibraryDirectories = [/ data / app / com.android.tv.settings-2DkaCncwGQ874WP-kx3G4Q == / lib / x86/ lib, / vendor / lib]]

Я искал эту ошибку в Интернете, и похоже, что она имеет дело с мультидексной функцией.Эта мультидексная функция хорошо документирована для чистого разработанного приложения Android, но не для приложений, извлеченных с платформы Android и развернутых с помощью adb.

Эта проблема связана с загрузкой библиотек Java.Я обнаружил темы, относящиеся к мультидексной функции Android, но только для сборок приложений с Android Studio / Gradle, а мое приложение было собрано на платформе Android

Что я могу сделать?

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

Что ж, похоже, во время развертывания моего приложения TvSettings произошла ошибка root. Вот его журнал:

E / dex2oat: неверный номер версии в заголовке файла dex. Файл: base.apk

Я прочитал несколько страниц и нашел эту страницу очень интересной: https://source.android.com/devices/tech/dalvik/configure

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

Моя идея - создать всю платформу, включая приложение TvSettings, и развернуть TvSettings с помощью adb. Поэтому формат apk может быть неправильным.

Мой следующий шаг - добавить в TvSettings / Settings / Android.mk флаг ниже:

LOCAL_DEX_PREOPT: = false

0 голосов
/ 01 апреля 2019

вы включили fileProvider в свой манифест?

...