2015-03-13 71 views
1

我想使用名爲Holdr的庫(https://github.com/evant/holdr)根據我的佈局文件生成類,以便在我的活動中輕鬆引用這些佈局中的視圖。Kotlin中Holdr的未解決的引用

我可以驗證類生成在構建時細

./gradlew assembleDebug 

佈局activity_main.xml中類生成Holdr_ActivityMain.java在

app/build/generated/source/holdr/ 

科特林任務

期間給了我兩個錯誤
:app:compileDebugKotlin 

錯誤

e: (8, 44): Unresolved reference: holdr 
e: (12, 24): Unresolved reference: Holdr_ActivityMain 

這裏是我的類

import com.myapp.holdr.Holdr_ActivityMain 

public class MainActivity : Activity() { 

    private var holdr: Holdr_ActivityMain? = null 

    override fun onCreate(savedInstanceState: Bundle?) { 
     super.onCreate(savedInstanceState) 
     setContentView(R.layout.activity_main) 
    } 

} 

這裏是我的build.gradle

apply plugin: 'com.android.application' 
apply plugin: 'me.tatarka.holdr' 
apply plugin: 'kotlin-android' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.0" 

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

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" 
} 

buildscript { 

    ext.kotlin_version = '0.10.770' 

    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'me.tatarka.holdr:gradle-plugin:1.4.1' 
     classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 
    } 
} 

repositories { 
    mavenCentral() 
} 

任何幫助,將不勝感激,謝謝。

+0

相關問題科特林的錯誤追蹤系統:https://youtrack.jetbrains.com/issue/KT-17989 – BoD 2017-05-21 13:22:42

回答

1

你使用什麼Kotlin Gradle插件版本?

現在,你可以明確地指定HOLDR源路徑作爲一種解決方法:

sourceSets { 
    ... 
    debug.java.srcDirs += 'build/generated/source/holdr/debug' 
    release.java.srcDirs += 'build/generated/source/holdr/release' 
} 
+0

我使用classpath「org.jetbrains.kotlin:kotlin-gradle-plugin:$ kotlin_version」with ext.kotlin_version ='0.10.770',雖然我安裝的Kotlin Android Studio插件版本爲0.10.195.25。感謝您的解決方法。 – 2015-03-14 23:26:32

+0

Holdr的作者在G +中對我的問題發表了評論:「我還沒有嘗試過讓它和kotlin一起工作,但理論上它應該使用android插件」registerJavaGeneratingTask「提供的方法來添加生成源文件到類路徑進行編譯,可能是因爲kotlin插件的目錄不再被拾取,這可能是可以理解的,因爲這個選項很難被記錄(我能找到的唯一參考是在0.7.0發佈說明https://plus.google.com/+AndroidDevelopers/posts/ersS6fMLxw1)中。「 – 2015-03-14 23:31:29

+0

哦,對不起,我真的想問你使用的是什麼Android Gradle插件。但是,如果解決方法有效,那可能沒有問題。 無論如何,我會調查一下,它看起來像Kotlin Gradle插件中的一個bug。 – yanex 2015-03-15 00:02:48

相關問題