Сборка Android не удалась: ошибка: не удается найти символьную переменную radio_animator - PullRequest
0 голосов
/ 22 октября 2018

Я только что обновил Android Studio до последней версии:

Android Studio 3.2.1 Build # AI-181.5540.7.32.5056338, построен 9 октября 2018 г. JRE: 1.8.0_152-release-1136-b06 amd64 JVM: 64-разрядная виртуальная машина OpenJDK от JetBrains sro Windows 10 10.0

, что также означало обновление для инструментов сборки до 28.0.3.С тех пор я не могу скомпилировать мой проект, который был в порядке.

Я застрял с ошибкой

ошибка: не могу найти символьную переменную radio_animator

Эта ошибка указывает на мой java-файл, где я пытаюсь получить AnimationDrawable из XML-файла ресурса:

ContextCompat.getDrawable(this, R.drawable.radio_animator) 

До обновления все работало нормально ...

Сейчастот же ресурс, кажется, не виден как ресурс.Я не изменил ни одной буквы в коде ..., я не перемещал и не заменял файл ресурсов xml.

Когда я щелкаю R.drawable.radio_animator в редакторе, он открываетсясписок анимации xml, чтобы он был виден для редактора ...

Я проверил документацию Google на AnimationDrawable и придерживаюсь предоставленного примера, без изменений.

Не уверен, что я делаю не так.Есть ли (еще) документированные изменения, связанные с последним обновлением Android Studio и новейшими инструментами для сборки?

Я нацеливаю приложение еще на Android 7.0, API 24 и, возможно, есть некоторая несовместимость.

Я также попытался установить BackgroundResource для представления и получить его оттуда, как показано здесь: Документация Google

Тот же результат с ошибкой.

Единственное решение, которое яДо сих пор было найдено удаление части кода, относящейся к получателю ресурсов AnimationDrawable, и я могу скомпилировать приложение с потерей функциональности анимации в результате: -)

Любая подсказка?

Спасибо

XML-файл моего списка анимации определен следующим образом: enter image description here

и находится в res / drawable согласно документации

1 Ответ

0 голосов
/ 23 октября 2018

Несмотря на то, что я не смог выяснить точную причину, я нашел обходное решение для этого случая.

Я попытался создать новое приложение в новой среде, просто чтобы протестировать функциональность AnimationDrawable с использованием точного кода и файлов.из моего провального проекта.Это сработало хорошо.Я заметил, что ресурс получает положительное целое число идентификатора ресурса, в то время как у моего отказавшего приложения отрицательный целочисленный идентификатор.Я не смог найти это в R.java.class ни в моем сбойном приложении.

Когда я заменил отрисовываемый XML существующим jpg-ресурсом для проверки, компиляция завершилась без ошибки, и ресурс получил положительный результат.Я БЫ.Это намекнуло мне на

перетаскивание этого xml во ВСЕ папки плотности drawable res (drawable-hdpi и т. Д. Папок)

Это помогло скомпилировать проект имоя анимационная прорисовка xml была неожиданно обнаружена компилятором и присвоила ему положительный целочисленный идентификатор, который также может быть найден в R.java.

Кажется, что есть некоторая логическая ошибка при переносе поддерживаемой версии Android с более высокой плотностью / более старой версиипроекты в новой среде.Даже «Чистый проект» не решит проблему, как это было в прошлом, и в папках, оставшихся от старых методов компиляции, есть что-то, что делает извлекаемый ресурс невосстановимым

Достаточно странно, что вам не нужно добавлятьxml для всех папок плотности в новом чистом проекте.

Так что либо вы создаете новый проект в последней версии Studio, либо в случае, если проект уже устойчив (как в моем случае), вы тратите часы на тестированиеНеудачные эксперименты с потерей недавно поседевших волос ...

Так что, если вы сомневаетесь, стоит ли загружать последние обновления в свою студию, сделайте это на тестовом компьютере, прежде чем в конечном итогебессонные ночи.

...