Почему у меня возникает синтаксическая ошибка в IDE после добавления проекта gradle в другой репозиторий, даже когда здание работает? - PullRequest
0 голосов
/ 16 мая 2018

У меня есть мультиплатформенный проект kotlin. Настройка для iOS и Android, она работает хорошо. Он имеет модуль common для совместного использования бизнес-логики и модуль platform-android и platform-ios для реализации API платформы.

После добавления модуля common и platform-android из проекта A в другой проект Android B среда IDE Android Studio сообщает о множестве синтаксических ошибок, но коды создаются и запускаются из студии Android без проблем.

Синтаксис выглядит так: kotlin-stdlib не существует, хотя он действительно находится в build.gradle, иначе он не будет собираться.

Например:

val filterMap = mutableMapOf<String, MenuFilter>()

Студия Android скажет Unresolved reference: mutableMapOf

Некоторые факты:

  • common модуль имеет проблему
  • без проблем для platform-android.
  • и, конечно, нет проблем, когда я использую IDEA для редактирования проекта A

мой build.gradle для common модуль выглядит следующим образом:

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"
    }
}

Корневой проект build.gradle в Android Studio:

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 Ultimate 2018.1
  • Android studio 3.1.2

1 Ответ

0 голосов
/ 01 ноября 2018

Попробуйте добавить это в build.gradle

apply plugin: 'org.jetbrains.kotlin.multiplatform'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...