aapt2 Удаление ресурса * без обязательного значения по умолчанию - PullRequest
0 голосов
/ 23 апреля 2020

При создании проекта Xamarin. Android в окне вывода записывается, что aapt2 удалил ресурсы из-за отсутствующего значения по умолчанию.

Xamarin.Android.Aapt2.targets(160,3): warning APT2000: warn: removing resource com.companyname.demo_app:drawable/parking_slot without required default value.

Удаленный ресурс является частью Xamarin. Android обязательный проект и также включен в aar-файл в drawables и в R.txt.

Поскольку это только лог-оператор в выходных данных сборки, сборка проекта и приложение могут быть запущены , Но при использовании одной части проекта привязки будет сгенерирована следующая ошибка:

Java.Lang.NoSuchFieldError: 'No static field parking_slot of type l in class Lcom/company/sample/R$drawable; or its superclasses (declaration of 'com.company.sample.R$drawable' appears in /data/app/com.companyname.demo_app-Ab0cDefG==/base.apk)'

Что вызывает удаление ресурса и как его можно предотвратить?

Редактировать 1:

Отсутствующий ресурс parking_slot находится не в папке drawable, а в drawable-xhdpi-v4, например. Чтобы проверить это, я переименовал aar в zip и извлек его.

Затем я скопировал parking_slot в папку drawable, заархивировал и снова переименовал в aar. Здание теперь без предупреждения aapt2. Тем не менее приложение снова падает с:

Java.Lang.NoClassDefFoundError: 'Failed resolution of: Lcom/company/sample/R$drawable;'

1 Ответ

0 голосов
/ 27 апреля 2020

Я протестировал aar-файл с родным приложением, не относящимся к Xamarin, и ни одна проблема не привлекла мое внимание к тому, что я могу прийти к выводу, что при сборке приложения Xamarin может что-то сломаться.

Тем не менее исправление (или обходной путь, если хотите) выглядит следующим образом:

  1. Переименуйте aar в zip и распакуйте.
  2. Найдите отсутствующий ресурс. В моем случае parking_slot
  3. Скопируйте отсутствующий ресурс в ваш проект приложения

Я думаю, что это работает из-за того, как работает резервная система Android.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...