Можно ли использовать библиотеку, созданную с помощью kotlin 1.3.x, в проекте с использованием kotlin 1.4.x?

#android #kotlin #gradle

#Android #kotlin #gradle

Вопрос:

У меня есть проект, который использует kotlin 1.4.21, и мне нужно сохранить эту версию, поскольку я также использую kotlinx-сериализацию, которая работает начиная с kotlin 1.4.x. У меня также есть другая библиотека, созданная с использованием kotlin 1.3.x, есть ли какой-либо способ использовать обе библиотеки в одном проекте? В настоящее время я получаю ошибки сборки, указывающие на то, что он не может найти классы из библиотеки, используя старую версию kotlin.

Не удается получить доступ к ‘com.xxx.xxx’, который является супертипом ‘com.xx.xxx.xxx’. Проверьте свой путь к классу модуля на наличие отсутствующих или конфликтующих зависимостей

Комментарии:

1. Это зависит от того, как построена библиотека (и как доставляются ее зависимости), но в основном она должна работать, независимо от того, какая версия kotlin использовалась для ее создания. Постарайтесь убедиться, что вы правильно добавили зависимость

2. Спасибо за ответ. Библиотека распространяется через частный артефактор с использованием jfrog. Я уверен, что правильно добавляю зависимость, поскольку ошибка исчезает, когда я переключаю версию проекта на использование kotlin 1.3.x

3. К сожалению, я не знаю JFrog, но, насколько я понимаю, Gradle во время упаковки jar должен помещать все в jar, и поскольку он скомпилирован, не должно иметь значения, используете ли вы более новый Kotlin или нет. Я бы предложил прикрепить полную ошибку с конкретными классами и, по крайней мере, строку с зависимостью от gradle.build — возможно, что-то тем временем устарело, и кто-нибудь сможет определить и помочь с этой проблемой

Ответ №1:

Передайте -api-version=1.3 компилятору Kotlin в качестве теста. Это сохранит совместимость вашего кода со стандартной библиотекой 1.3, которую вы можете использовать для проверки целостности зависимости 1.3, которую вы пытаетесь импортировать.

Если компилятор по-прежнему выходит из строя с той же ошибкой, вам нужно будет собрать библиотеку 1.3 с помощью 1.4 и развернуть ее в Artifactory в качестве новой версии.

Дополнительные сведения см. в разделе Режимы совместимости с Kotlin.

Ответ №2:

Это было связано с проблемой proguard в упомянутой библиотеке (с использованием kotlin 1.3.x), которая вызывала ошибку сборки только в проектах с kotlin 1.4.x . В проектах, использующих kotlin 1.3.x, это было просто предупреждение о сборке, которое не блокировало запуск или выпуск проекта.