Мы отлаживаем проблему с одним из наших приложений, который затрагивает только устройства Huawei. Чтобы отладить его, мы приобрели P20 Lite ANE-LX1. Мы установили некоторые точки останова в нашем коде и исследуем полную трассировку стека. На устройстве установлено Android 8.0, и у нас есть тот же SDK, который загружен в нашей Android-студии.
Когда мы присоединяем наше устройство к отладчику и пытаемся исследовать трассировку стека, мы получаем следующие ошибки в исходных файлах системы:
После игры с трассировкой стека, мы можем подтвердить, что наши исходные файлы не соответствуют тому, что установлено на устройстве. Иногда отладчик указывает на строку, где вызывается functionA
A, а в трассировке стека мы видим, что вместо этого вызывается functionB
B. На эти файлы, на которые мы можем подтвердить, влияют следующие проблемы:
-
VideoView
, -
MediaPlayer
, -
ContentProvider
.
Мы пробовали все возможные решения, которые мы могли найти, включая очистку проекта, удаление любых дополнительных SDK из Android Studio, изменение параметров проекта - ничто не помогает решить эту проблему.
Это заставляет нас думать, что Huawei устанавливает модифицированную версию Android 8.0 на своих устройствах, поэтому мы не можем отлаживать трассировку стека для системных файлов. Мы обратились к Huawei, чтобы попытаться прояснить это.
Тем временем, мы будем благодарны, если вы сможете бросить на нас какие-либо соответствующие идеи. Может быть, вы знаете, где взять исходные файлы, которые Huawei устанавливает на своих устройствах? Или, может быть, вы знаете, как исправить это несоответствие между исходным кодом и байт-кодом каким-то другим способом?
Обновление 1
Следуя совету Роберта, я удалил исходные коды для Android 26 и снова запустил приложение на своем Huawei. Как только я прыгнул в файл VideoView
, я увидел следующую картинку:
Я нажал "Загрузить" и начал загружать исходные файлы:
После этого я смог войти в VideoView
и, похоже, работал нормально. Однако после этой строки стало очевидно, что эти исходные файлы также неверны:
Когда я пытаюсь войти в функцию requestLayout
я получаю следующее:
И это, очевидно, неправильный результат. На самом деле, если я нажму "Переход к следующей строке", я снова увижу сообщение о несоответствии исходного кода с байт-кодом.