У нас есть многомодульный android проект, который мы начали реорганизовывать в kotlin -мультиплатформенный проект с несколькими модулями, чтобы поделиться с нашим приложением iOS.
Наш мультиплатформенный проект в настоящее время имеет 4 модуля: домен, презентация, данные и shared-приложение. Модуль shared-app зависит от трех других модулей, и этот модуль импортируется в старый проект android. Мы объединяем модули в один, чтобы создать только одну платформу для проекта iOS.
Оба проекта успешно собраны. Но если мы получим экземпляр интерфейса, который определен в модуле shared-app, который использует типы из подмодулей, IDE покажет [ERROR: SomeType] для своих типов возврата.
![enter image description here](https://i.stack.imgur.com/8PPHR.png)
В наших старых android проектах settings.gradle мы использовали includeBuild (mpp-project) и создали замену зависимостей для общего приложения модуль в проекте mpp.
enableFeaturePreview("GRADLE_METADATA")
includeBuild("mpp-project") {
dependencySubstitution {
substitute(module("our.package.name:shared")).with(project(":shared-app"))
}
}
С другой стороны, все наши открытые и транзитивно импортированные типы могут быть созданы в старом проекте android, даже из подмодулей. (например, я могу установить SomeType, и он разрешается)
Структура проекта Gradle:
oldAndroidRootProject
├─myApp (import implementation of all androidModules and mppFramework)
│ └─build.gradle
├─androidModule1
│ └─build.gradle
├─androidModule2
│ └─build.gradle
├─androidModule3
│ └─build.gradle
│
├─myMppRootProject
│ ├─mppFramework (depends on mppModuleXs and dependencies are declared as api(":mppModuleX"))
│ │ └─build.gradle
│ ├─mppModule1
│ │ └─build.gradle
│ ├─mppModule2
│ │ └─build.gradle
│ ├─mppModule3
│ │ └─build.gradle
│ ├─mppModule4
│ │ └─build.gradle
│ ├─build.gradle
│ └─settings.gradle (uses includeBuild("myMppRootProject"))
├─build.gradle
└─settings.gradle (uses includeBuild("myMppRootProject"))
Если я проверяю источник модулей mppFramework, когда был открыт проект androidRoot, я см. это:
![enter image description here](https://i.stack.imgur.com/ZAyFp.png)