kann nicht anrufen, kotlin-Modul von java-Modul

Ich möchte eine android-app in java, sondern ein library-Modul in kotlin. Aber wenn ich versuche, führen Sie die app in meinem Handy gibt es eine Fehlermeldung, dass es nicht finden können, meine Kotlin-Klasse. Dies ist mein kotlin-Klasse:

    package com.example.mylibrary

    import android.util.Log

    class A {
        fun helloWorld(){
            Log.d("Kotlin", "Hello World!")
        }
    }

– und gradle-Datei für meine kotlin-Modul:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.2.1'
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
buildscript {
    ext.kotlin_version = '0.6.+'
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
repositories {
    mavenCentral()
}

Hier ist meine Haupt-Tätigkeit:

package com.example.uisample;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.example.mylibrary.A;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        A obj = new A();
        obj.helloWorld();

    }

}

Beachten Sie, wie android-studio-Importe com.example.mylibrary.A statt com.example.mylibrar.Akt als die Referenz sagt. Android studio meldet keine Fehler vor der Kompilierung.

Gradle-Datei für die app:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "com.example.uisample"
        minSdkVersion 11
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.2.1'
    compile project(':mylibrary')
}

Nachdem das Projekt ausgeführt wird, gradle wirft diese Fehlermeldung: „cannot find symbol class A“. Was mache ich falsch?

InformationsquelleAutor gesuwall | 2016-04-08



One Reply
  1. 11

    Ein paar Dinge:

    1. Gelten die kotlin-android-plugin, um Ihre Bibliothek-Modul zu bauen.gradle (siehe die Dokumentation):

      apply plugin: 'kotlin-android'

      Wie es jetzt steht, bist du nicht auch sagen, gradle kompilieren Kotlin-Dateien.

    2. Ihre buildscripts block sollte wohl bei den top-level zu bauen.gradle, anstatt das Modul zu bauen.gradle.

    3. Aktualisieren Sie die voll-version der Kotlin 1.0.1-2

    • Für andere mit dem gleichen Fehler, beachten Sie, dass wenn Ihre Bibliothek ist eine Reine Java-Bibliothek, dann müssen Sie apply plugin: 'kotlin' statt

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.