Intereting Posts
Как использовать `filter` на экземпляре карты в Kotlin? ext в buildscript не может быть распознан Gradle Kotlin DSL Возможно ли иметь расширения функций на лямбдах? Kotlin klaxon проанализирует направление Google Api FloatingActionButton: настройка настраиваемого фона не поддерживается FragmentTransaction не будет компилироваться в проекте Android Kotlin как реализовать Switch, используя привязку данных в android Проблемы, определяющие оператор equals () Используйте Java Standard Lib для Kotlin при компиляции в Javascript Ошибка обратного вызова OnSuccessListener Firebase Storage Почему у kotlin есть функции componentN в классе данных, если у них уже есть геттеры и сеттеры? Как получить текущее имя файла класса в kotlin Какой способ лучше, если я надеюсь использовать синтаксис, как статическая функция в Котлин? Анимация просмотра путем масштабирования до полной высоты экрана от его положения Почему мы не можем публиковать типы типов из частных расширенных типов?

Модуль библиотеки Android не компилируется при использовании классов из чистого модуля Kotlin

У меня есть проект, использующий эту структуру: https://github.com/android10/Android-CleanArchitecture , и я пытаюсь преобразовать его в Kotlin.

Модуль домена компилируется просто отлично, но когда я пытаюсь скомпилировать модуль данных, я получаю следующую ошибку:

Unresolved reference: ThreadExecutor` 

и некоторые другие подобные ошибки.

Эти ошибки касаются интерфейсов, dataclass или синглетов Dagger. Похоже, что модуль данных не может найти некоторые объекты из модуля домена (хотя IntelliJ не показывает ошибок в редакторе).

Вот интерфейс ThreadExecutor:

 package com.company.app.domain.executor import java.util.concurrent.Executor interface ThreadExecutor : Executor 

Файл build.gradle для модуля домена:

 apply plugin: 'java' apply plugin: 'kotlin' //noinspection GroovyUnusedAssignment sourceCompatibility = JavaVersion.VERSION_1_7 //noinspection GroovyUnusedAssignment targetCompatibility = JavaVersion.VERSION_1_7 buildscript { repositories { mavenCentral() } } dependencies { testCompile 'junit:junit:4.12' compile 'io.reactivex.rxjava2:rxjava:2.1.3' compile 'io.reactivex.rxjava2:rxkotlin:2.1.0' compile 'com.google.guava:guava:22.0-android' compile 'javax.inject:javax.inject:1' compile 'joda-time:joda-time:2.9.9' } repositories { mavenCentral() } compileKotlin { kotlinOptions { jvmTarget = "1.6" } } compileTestKotlin { kotlinOptions { jvmTarget = "1.6" } } 

Глобальный файл build.gradle проекта:

 // Top-level build file where you can add configuration options common to all sub-projects/modules. apply plugin: 'kotlin' buildscript { ext.kotlin_version = '1.1.4-3' repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { jcenter() mavenCentral() } configurations.all { resolutionStrategy.force 'com.google.code.findbugs:jsr305:2.0.1' } } clean { delete rootProject.buildDir } 

И, наконец, модуль data build.gralde:

 buildscript { repositories { mavenCentral() } } apply plugin: 'com.android.library' apply plugin: 'kotlin-android' android { publishNonDefault true compileSdkVersion 26 buildToolsVersion "26.0.1" defaultConfig { minSdkVersion 23 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } } dependencies { compile project(':domain') compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex.rxjava2:rxjava:2.1.3' compile 'io.reactivex.rxjava2:rxkotlin:2.1.0' compile 'com.google.code.gson:gson:2.8.1' compile 'com.squareup.okhttp3:okhttp:3.8.1' kapt 'com.google.dagger:dagger-compiler:2.11' compile 'com.google.dagger:dagger:2.11' androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:26.0.0-alpha1' testCompile 'junit:junit:4.12' } repositories { mavenCentral() } 

Похоже, что jar домена, составленный из Kotlin, не подвергает эти объекты тому, как ожидает модуль данных, но в настоящее время я не знаю, почему.

Я наконец нашел, почему он не компилируется: мне пришлось называть «rebuild project», а не «make project», чтобы Android Studio учитывала все изменения.