#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, это было просто предупреждение о сборке, которое не блокировало запуск или выпуск проекта.