Я пишу библиотеку Kotlin и хочу, чтобы интеграция прошла максимально гладко. Поэтому я пытаюсь понять, какая ситуация может нарушить совместимость библиотек.
Есть одна вещь, в которой я до сих пор не уверен. В моем опыте написания приложений для Android я иногда сталкивался с ошибкой «Модуль был скомпилирован с несовместимой версией Kotlin. Двоичная версия его метаданных — x, ожидаемая версия — y».
Мой вопрос: в каком случае произойдет такая ошибка? Поскольку мне это не сразу понятно.
Иногда срабатывает обновление плагина kotlin-gradle до более новой версии (что, в моем понимании, является обновлением базового компилятора kotlin). Но для меня это не имеет смысла. Потому что, насколько я понимаю, kotlin компилируется в байт-код Java, что обеспечивает плавную совместимость с Java.
Таким образом, моя интуиция подсказывала мне, что компилятор должен был выполнить свою работу к тому времени, когда исходный код будет готов. компилируется в двоичный формат. Когда клиентский проект использует библиотеку, это уже простой байт-код, и компиляция Kotlin больше не производится (компилятор Kotlin должен просто скомпилировать новые исходные коды Kotlin из клиентского проекта, и нет необходимости перекомпилировать библиотеку), но выдается ошибка. . Я чувствую, что здесь есть пробел в моем понимании.
Любые объяснения по этому поводу приветствуются.
Подробнее здесь: https://stackoverflow.com/questions/791 ... tlin-error