2015-03-13 30 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

相关问题