【问题标题】:Unresolved reference for Holdr in Kotlin在 Kotlin 中未解决的 Holdr 参考
【发布时间】:2015-03-13 06:30:27
【问题描述】:

我正在尝试使用一个名为 Holdr (https://github.com/evant/holdr) 的库来根据我的布局文件生成类,以便在我的活动中轻松引用这些布局中的视图。

我可以验证类在构建时生成良好

./gradlew assembleDebug

布局activity_main.xml的类在

中生成Holdr_ActivityMain.java
app/build/generated/source/holdr/

Kotlin 在任务期间给了我两个错误

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

任何帮助将不胜感激,谢谢。

【问题讨论】:

标签: android gradle android-gradle-plugin build.gradle kotlin


【解决方案1】:

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

目前,您可以明确指定 Holdr 源路径作为解决方法:

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

【讨论】:

  • 我正在使用类路径 "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 和 ext.kotlin_version = '0.10.770',虽然我已经安装了 Kotlin Android Studio 插件版本是 0.10.195.25。感谢您的解决方法。
  • holdr 的作者在 G+ 中评论了我的问题:“我没有尝试让它与 kotlin 一起使用,但理论上应该可以。我使用的是 android 插件提供的方法” registerJavaGeneratingTask”,以便将生成的源代码添加到类路径以进行编译。可能是 kotlin 插件以一种不再拾取目录的方式处理事情。这有点可以理解,因为这个选项几乎没有文档记录(我能找到的唯一参考是 0.7.0 发行说明plus.google.com/+AndroidDevelopers/posts/ersS6fMLxw1)。"
  • 哦,对不起,我其实想问一下你用的是什么Android Gradle插件。但是,如果解决方法有效,那么也许就没有问题了。无论如何,我会调查一下,它看起来像是 Kotlin Gradle 插件中的一个错误。
  • 我正在使用 'com.android.tools.build:gradle:1.0.1'
  • 您找到真正解决此错误的方法了吗?我写了一个插件来使用 registerJavaGeneratingTask 方法生成代码,我可以编写我的 Kotlin 代码,检测到类,但是在构建时,kotlin 失败
猜你喜欢
  • 2018-10-25
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 2021-10-29
  • 2018-10-16
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多