gpt4 book ai didi

android - Kotlin 多平台库接口(interface)的暴露类型未解析

转载 作者:行者123 更新时间:2023-12-02 13:33:57 24 4
gpt4 key购买 nike

我们有一个多模块的 android 项目,我们开始将其重构为一个 kotlin-multiplatform 项目,其中包含多个模块以与我们的 iOS 应用程序共享。

我们的多平台项目目前有 4 个模块:域、演示、数据和共享应用程序。 shared-app 模块依赖于其他三个模块,这是导入到旧 android 项目中的模块。我们将这些模块合并为一个,只为 iOS 项目生成一个框架。

两个项目都成功构建。但是,如果我们检索一个在共享应用程序模块中定义的接口(interface)实例,该模块使用子模块中的类型,IDE 会显示 [ERROR : SomeType] 的返回类型。

enter image description here

在我们旧的 android 项目 settings.gradle 中,我们使用了 includeBuild(mpp-project) 并为 mpp-project 中的 shared-app 模块创建了一个依赖替换。

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

最佳答案

如果我可以解释一下:

   -------
- ios -
-------
|
----------
- shared - ---------
---------- \
| \ \
-------- ---------- ----------------
- data - - domain - - presentation -
-------- ---------- ----------------

如果 shared是单点入口,它应该通过头部暴露依赖类型。这种东西的棘手部分是当你想要一些东西时,比如说, domain ,这不包含在 shared 的公共(public)调用中。如果不是这种情况,那么您正在做的事情应该有效。

如果您发布构建配置会很有帮助,这样我们就可以看到依赖项是如何配置的。另外,这在命令行上有效吗?有时 IDE 不工作,但构建正常。

另外,这是 Intellij 还是 Android Studio,什么版本? Intellij 在 KMP 方面往往是最新的。

关于android - Kotlin 多平台库接口(interface)的暴露类型未解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59667646/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com