我有一个现有的 Android 应用程序,我喜欢将 KMM 库项目集成为 git 子模块。我们希望在本地构建上集成 git 子模块,并在 CI 构建上使用 Maven 存储库依赖项。
为了实现这一点,我通过
settings.gradle
在我的 includeBuild
中添加了子模块的目录,并替换了特定模块的所有依赖项:
includeBuild('my-kmm-library-project') {
dependencySubstitution {
substitute module('com.example.any-kmm-artifact:any') using project(':any')
}
}
添加
implementation 'com.example.any-kmm-artifact:any:1.0.0'
我的应用程序
build.gradle
文件允许访问 android 源集中子模块 /my-kmm-library-project/any/src/androidMain
中的所有类和包。但我无法选择从 commonMain
源集中导入“类”。我已经尝试让androidMain
依赖于commonMain.
kmm/build.gradle.kts:
val androidMain by getting {
dependsOn(commonMain)
...
}
这不会带来任何成功。
我还尝试在 KMM 项目上添加
jvm()
目标并让 jvmMain
依赖于 androidMain
,但这会产生编译错误,导致 Android SDK 类无法解析。
我认为主要问题是,类只是编译到可以组装的aar中。但该模块已集成为 gradle 项目实现。
是否有 KMM 选项来编译“公共类”并通过 gradle 模块访问它们?
“但是我无法选择从 commonMain 源集中导入“类””
在 Android 项目中,将 KMM 库包含为 *.aar 后。
您只需从 KMM 库的 /androidMain(而不是 /commonMain)正确导入*使用“类”
因此,使用这种方式
expect - actual
方法进行继承
/commonMain:期望方法
/androidMain:实际方法