安卓/Kotlin: 未解决的引用问题:timber

4

我正在尝试为Android编写Kotlin库,但无法包含Timber。 我一直收到以下错误:

Error:error: unresolved reference: timber

我在我的build.gradle文件中有以下内容:

apply plugin: 'java-library'
apply plugin: 'kotlin'

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

sourceCompatibility = "1.8"
targetCompatibility = "1.8"

buildscript {
    ext.kotlin_version = '1.1.2-4'
    repositories {
        maven {url "https://maven.google.com"}
        mavenCentral()
    }

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

repositories {
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    compile 'com.jakewharton.timber:timber:4.5.1'
    testCompile 'junit:junit:4.12'
}

我的源文件目前非常简单:

package net.mbonnin.test

import timber.log.Timber

class Main() {

    fun main() {
        Timber.d("hello world")
    }
}

导入语句出错了。

我正在使用Android Studio 3 canary 4和kotlin 1.1.2-4。 你有任何想法我这里做错了什么吗?或者timber在kotlin中不能使用?


1
好的,Timber似乎只能在Android上使用。我原本以为它可以在没有Android的情况下使用,但我可能错了... - mbonnin
这里不应该是问题所在。而且你不应该那样编译 Gradle 插件。你的 gradle 脚本剩下的部分是什么? - nhaarman
是的,我也觉得很奇怪。如果Android.log存在未满足的依赖关系,我希望错误消息会指出这一点,而不仅仅是“未解决的引用”。 - mbonnin
你刷新了Gradle项目以更新依赖关系吗? - holi-java
你有两个“dependencies”部分。也许第一个覆盖了第二个?那么Timber将永远不会被包含,这就解释了为什么你无法在代码中引用它。 - nhaarman
1个回答

7
apply plugin: 'java-library'
apply plugin: 'kotlin'

您没有应用任何android插件,因此不知道如何处理@aar构件。但这些是使用Android库时的默认构件。有时您可能会发现依赖项中还有@jar构件,但已经不那么常见了。而Timber是一个具有小型、可扩展API的记录器,它在Android的普通Log类之上提供了实用程序。您可以教Gradle理解@aar文件,但使用Timber时会遇到Android依赖项的问题。因此,基本上您必须将模块设置为Android Kotlin库。
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接