Я использую Android Studio для создания мультиплатформенного приложения Kotlin (KMP) с помощью Compose Multiplatform, который я получил от Kotlin Multiplatform Wizard.
Если я хочу добавить ресурс (например, изображение или SVG) в свое приложение, я должен скопировать файл ресурса в нужное место, а затем сослаться на ресурс в моем коде Kotlin, используя что-то вроде Res.drawable.<name_of_file>
.
Проблема в том, что я получаю ошибку времени компиляции о том, что Res.drawable.<name_of_file>
не определен. Это имеет смысл, поскольку я добавил файл, но не создал заново класс Res.
У меня есть два вопроса:
Кто-нибудь знает имя задачи Gradle, которая заново создаст класс Res?
Кто-нибудь знает, как найти задачу Gradle, которая повторно генерирует Res? Я просмотрел список всех задач Gradle (используя панель Gradle в Android Studio), но я ничего не нашел с именем, которое предполагает, что он перестраивает Res. Список длинный и самый Кажется, что многие задачи определены вне самого проекта.
Есть два способа получить сгенерированный ресурс в Kotlin Multiplatform или Compose Multiplatform. Во-первых, вам просто нужно добавить ресурс в commonMain и просто пересобрать его.
Во-вторых, вам нужно запустить команду ./gradlew :composeApp:generateResourceAccessorsForCommonMain
Это та же команда, которую выполняет gradle, когда мы пытаемся создать приложение в Compose или Kotlin Multiplatform.
Это работает! Спасибо! Кроме того, профессиональный совет для Android Studio: откройте панель Gradle, нажмите «развернуть все», а затем начните вводить «gen» для поиска, а затем вставьте остальную часть действительно длинного имени :)