#android #android-resources #lint
#Android #android-ресурсы #ворсинки
Вопрос:
У меня есть модуль библиотеки Android с strings.xml объявляет некоторые строки внутри. Конечно, эти строки используются в этой библиотеке.
У меня есть приложение для Android, которое имеет зависимости implementation project(':thelibmodule')
. Затем в этом приложении для Android у меня также есть те же строки, которые нужно перезаписать в библиотеке Android. Таким образом, это означает, что они используются внутри библиотеки Android.
Эта стратегия работает отлично, перезаписанные строки работают отлично. Но Lint предупреждает, что эти строки в приложении Android не используются. Почему и как исправить? Должен ли я как-то исправить код или я должен исправить правила Lint?
Комментарии:
1. Хммм… похоже, никто не сталкивается с этой проблемой, или ни у кого нет ответа, или даже никто не хочет обсуждать. Грустно!
4. Переопределение ресурсов может привести к труднодоступным ошибкам. Что произойдет, если библиотека добавит или удалит позиционный аргумент в строке в новой версии? Вы должны убедиться, что переопределенные ресурсы соответствуют новому «контракту». Я вижу два лучших способа: 1. добавить поддержку всех необходимых языков в саму библиотеку (не всегда возможно, особенно если вы не являетесь разработчиком этой библиотеки) 2. переместить ресурсы из библиотеки и предоставить интерфейс для извлечения ресурсов (через атрибуты Kotlin / Java или theme) и реализовать егона стороне приложения.
5. @italankin нам не нужно проверять, соответствуют ли переопределенные ресурсы новому контракту, если у нас есть определенные ресурсы только для переопределения, контракт есть, но мы не можем пропустить, потому что, если мы хотим новый язык для этих ресурсов, нам нужно его перезаписать. Но да, я согласен с вами, что ваше решение (2) выглядит многообещающим, хотя и требует дополнительных усилий, но да, я думаю, что смогу это сделать, чтобы избежать предупреждений. Большое спасибо.