2016-04-08 258 views
2

我想在java中有一個android應用程序,但在kotlin中有一個庫模塊。但是,當我嘗試在手機中運行應用程序時,出現錯誤,說它無法找到我的Kotlin課程。這是我的科特林類:不能從java模塊調用kotlin模塊

package com.example.mylibrary 

    import android.util.Log 

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

和gradle這個文件我科特林模塊:

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() 
} 

這是我的主要活動:

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(); 

    } 

} 

注意如何機器人工作室進口com.example.mylibrary.A代替com.example.mylibrar.Akt作爲參考文獻說。編譯之前,Android Studio報告沒有錯誤。對於應用

搖籃文件:

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') 
} 

項目運行後,gradle這個引發此錯誤: 「找不到符號類A」。我究竟做錯了什麼?

回答

6

有幾件事情:

  1. 應用科特林-Android插件到您的庫模塊的build.gradle(see the docs):

    apply plugin: 'kotlin-android' 
    

    目前的情況是,你甚至沒有告訴gradle來編譯Kotlin文件。

  2. 您的buildscript塊應該可能位於頂層build.gradle而不是模塊build.gradle。

  3. 考慮更新科特林1.0.1-2

+0

感謝您的的完全釋放版本!我知道我錯過了一些東西。 – Sloy