Общая библиотека Kotlin для повторного использования в нескольких MPP - PullRequest
0 голосов
/ 10 ноября 2019

Я настраиваю мультиплатформенный проект Kotlin, чтобы я мог повторно использовать общий код на нескольких платформах для одного приложения. При создании общего кода для приложения я выделил несколько базовых классов, которые я хотел бы использовать в качестве библиотеки в нескольких многоплатформенных проектах. Я пытаюсь добавить библиотеку в качестве зависимости в commonMain. Есть пара вещей, которые я не понимаю.

Прежде всего: возможно ли это в настоящее время?

Если да: Стандартным stdlib-common является файл jar, правильно? Почему jar может называться зависимостью в commonMain, если там не может использоваться Java? Или можно использовать jar-файл, скомпилированный из чистого Kotlin, если он имеет только Kotlin-зависимости?

Как мне скомпилировать чистый Kotlin-jar, который можно использовать в commonMain так же, как stdlib-commonиспользуемый? Существуют ли примеры проектов build.gradle или руководств о том, как это должно быть упаковано?

Если нет: Какие варианты мне в противном случае придется повторно использовать код в нескольких многоплатформенных проектах, если я хочуизбежать дублирования? На самом ли деле мне нужно хранить весь исходный код в реальной исходной папке commonMain? Может ли это быть связано из другой папки, если так? Я попытался добавить дополнительные корни контента, но, похоже, это не сработало, поскольку Gradle контролирует конфигурацию, и я не уверен, как добавить дополнительные корни контента в commonMain через Gradle.

enter image description here

Заранее спасибо.

1 Ответ

0 голосов
/ 11 ноября 2019

Я заработал, в основном, просматривая эту ветку и просматривая этот пример . Хотя некоторые из них уже датированы, это помогло мне понять следующее:

MPP1 может иметь другой MPP2 в качестве зависимости. Здесь - список библиотек MPP для справки.

MPP2 должен генерировать артефакты для того же набора платформ, что и в MPP1.

MPP2 генерирует платформуартефакты вместе с файлом модуля , где они описаны. MPP1 может затем использовать приведенную ниже конфигурацию. Благодаря файлу модуля нет необходимости явно добавлять соответствующие зависимости каждой платформы, зависимость должна быть объявлена ​​только в commonMain.

commonMain {
    dependencies {
        implementation kotlin('stdlib-common')
        implementation 'com.company:mpp2:1.0'
    }
}
...