Как я исправил краш Realm в KMP Desktop на старых версиях macOS

от автора

Я — Денис, Middle Android-разработчик в «Black Bricks». В нашем KMP проекте мы используем Realm для работы с БД. Всё шло плавно пока мы разрабатывали проект на машинах под актуальными версиями macOS. Но после первого большого внешнего тестирования выяснилось, что многие пользователи сидят на macOS 10.13-11.6. На этих версиях наш проект падал с ошибкой: librealmc.dylib was prebuild for macOS 12.7.

Сперва была загвоздка найти машину на старой macOS. Виртуальную машину просто так на M-чипах не поставить, так как 10.13-11.6 не поддерживает ARM. Но всё же удалось найти MacBook Air на 11.6. Я попробовал собрать билд в Android Studio — те-же ошибки, что указал выше. Погуглив, наткнулся на карточку в JIRA.

Untitled

Я копнул вглубь библиотеки realm-kotlin, она зависит от realm-core. В которой, в свою очередь есть интересный блок кода:

let platforms: [SupportedPlatform] = [     .macOS(.v12_7),     .iOS(.v12),     .tvOS(.v12),     .watchOS(.v4) ]

Новые версии Realm для KMP используют realm-core, где поддерживаемая версия macOS от 12.7.

1.16.0

Kotlin 1.9.0+
Ktor 2.1.2+.
Coroutines 1.7.0+.
Gradle 6.8.3 — 8.5

1.8.0

Kotlin 1.7.20+
Ktor 2.1.2+.
Coroutines 1.6.4+.
Gradle 6.7.1 — 7.6.1

1.7.0

Kotlin 1.7.20-1.8.10
Ktor 2.1.2+.
Coroutines 1.6.4+.
Gradle 6.7.1 — 7.6.1

Пришлось просматривать коммиты в библиотеке, чтобы найти нужную версию kotlin-core, которая использовала бы realm-core с поддерживаемой macOS 10.13+. Для этого подошла 1.7.0.

Из-за этого пришлось понизить Kotlin и некоторые зависимости для совместимости с Realm 1.7.0, что стоит дорого для большого проекта на этапе релиза.

Ради интереса попробовал запустить опенсорсный KMP-проект с Room. Проект запустился на старых macOS без проблем и даже с Kotlin 2.0. Поэтому, если цель — поддерживать старые версии macOS и думаете, стоит ли выбрать Realm или Room, советую Room.

Спасибо за чтение!

Денис Попков

Middle Android разработчик в «Black Bricks»

Если вы нашли неточности/ошибки в статье или просто хотите дополнить её своим мнением — то прошу в комментарии! Или можете написать мне в Telegram — t.me/MolodoyDenis.


ссылка на оригинал статьи https://habr.com/ru/articles/828808/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *