android - 为什么在将 gradle 项目添加到另一个 repo 后,即使构建工作,IDE 中也会出现语法错误?
问题描述
我有一个适用于 iOS 和 Android 的 kotlin 多平台项目,它运行良好。它有一个common
用于共享业务逻辑的模块,以及platform-android
一个platform-ios
用于实现平台 API 的模块。
在我将项目 A 中的common
andplatform-android
模块添加到另一个 Android 项目 B 后,Android Studio IDE 报告了大量的语法错误,但代码从 Android Studio 构建和运行没有问题。
语法看起来好像kotlin-stdlib
不存在,而它确实在 中build.gradle
,否则它不会构建。
例如:
val filterMap = mutableMapOf<String, MenuFilter>()
Android工作室会说Unresolved reference: mutableMapOf
一些事实:
common
模块有问题- 没问题
platform-android
。 - 当然,当我使用IDEA编辑项目A时没有问题
我build.gradle
的 forcommon
模块如下所示:
apply plugin: 'kotlin-platform-common'
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version"
testCompile "org.jetbrains.kotlin:kotlin-test-annotations-common:$kotlin_version"
testCompile "org.jetbrains.kotlin:kotlin-test-common:$kotlin_version"
}
sourceSets {
main.kotlin.srcDirs += 'main/'
test.kotlin.srcDirs += 'test/'
}
task sourcesJar(type: Jar) {
classifier = 'sources'
from sourceSets.main.kotlin
}
artifacts {
archives sourcesJar
}
kotlin {
experimental {
coroutines "enable"
}
}
Android Studio 中的 rootProjectbuild.gradle
是:
buildscript {
ext{
kotlin_version = '1.2.41'
anko_version = '0.10.4'
dagger_version = '2.15'
support_lib_version = '27.1.1'
}
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
maven { url "https://jitpack.io" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
这是settings.gradle
Android项目B的文件
def projectA_path = "path/to/projectA"
include(":common")
project(":common").projectDir = new File("$projectA_path/common")
include(":platforms:android")
project(":platforms:android").projectDir = new File("$projectA_path/platforms/android")
根据此处的设置,即使两者来自不同的项目。这两个不应该工作吗?我在这里想念什么?
IDE版本:
- IDEA 终极版 2018.1
- 安卓工作室 3.1.2
解决方案
尝试添加这个build.gradle
apply plugin: 'org.jetbrains.kotlin.multiplatform'
推荐阅读
- php - 将 php 与托管在 AWS 上的 Angular 应用程序一起使用
- powershell - 使用 Gradle 调用 powershell 脚本
- build - 在命令触发的 docker-compose build 之前执行一些 bash 脚本
- apache-camel - 如何解决 java.lang.NoClassDefFoundError: org/apache/camel/impl/DefaultComponent?
- css - 宽度属性会影响清除吗?
- python - 重塑数据框:列到行
- java - 说在 String 变量中可以存储所有 ASCII 符号是否正确?
- javascript - jQuery:如何克隆包含 p5 画布的 div?
- powershell - 获取连接属性名称
- npm - NPM 的 package-lock.json 中的层次结构代表什么?