Преобразование Java-проекта Android в проект Android Kotlin - PullRequest
0 голосов
/ 23 марта 2019

Я решил несколько недель назад начать преобразование моего существующего приложения (я написал его в Java) в kotlin. Я преобразовал только одно упражнение, и я хотел проверить функциональность, прежде чем я буду двигаться вперед и изменить все мои классы. К сожалению, я получаю следующую ошибку:

Unresolved reference: DaggerSearchComponent

Вот как я разрешаю свои зависимости с помощью этого действия, этот код будет вызываться из метода onCreate:

SearchActivity.kt

 override fun resolveDependency() {
    DaggerSearchComponent.builder()
            .applicationComponent(applicationComponent)
            .searchModule(SearchModule(this))
            .build().inject(this)

}

SearchComponent.java

@PerActivity
@Component(modules = SearchModule.class, dependencies = ApplicationComponent.class)
public interface SearchComponent {

    void inject(SearchActivity activity);

}

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

Я добавил плагин kotlin в свой build.gradle (Модуль: приложение)

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'

build.gradle (проект)

    apply plugin: 'kotlin-kapt'

buildscript {
    ext.kotlin_version = '1.3.21'

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Я не нашел никакой другой полезной информации, кроме добавления плагина kotlin в файл gradle приложения, но у меня это не сработало.

При использовании dagger2 можно ли использовать kotlin с java или мне нужно преобразовать каждый компонент / модуль в kotlin перед его тестированием?

1 Ответ

2 голосов
/ 23 марта 2019

Убедитесь, что вы добавили эти зависимости в модуль gradle:

implementation "com.google.dagger:dagger:$rootProject.dagger2Version"
implementation "com.google.dagger:dagger-android:$rootProject.dagger2Version"
implementation "com.google.dagger:dagger-android-support:$rootProject.dagger2Version"
kapt "com.google.dagger:dagger-android-processor:$rootProject.dagger2Version" 
kapt "com.google.dagger:dagger-compiler:$rootProject.dagger2Version"
testAnnotationProcessor "com.google.dagger:dagger-compiler:$rootProject.dagger2Version" 

И добавить

apply plugin: 'kotlin-kapt'

также на уровне модуля.

Внести изменения в SearchComponent (Kotlin)

@PerActivity
@Component(modules = [SearchModule.class::class], dependencies = [ApplicationComponent::class])
interface SearchComponent {

    fun inject(application: Application)

}
...