无法解析方法“plant(timber.log.Timber.DebugTree)”

C.B*_*.B. 16 android timber-android

我的配置或代码有什么问题?
我突出显示了此错误

无法解析方法“plant(timber.log.Timber.DebugTree)”

对于代码

import timber.log.Timber;  
public class AppClass extends Application {  
    @Override  
    public void onCreate() {  
        super.onCreate();  
        if (BuildConfig.DEBUG) { Timber.plant(new Timber.DebugTree()); }  
    }  
}  
Run Code Online (Sandbox Code Playgroud)

但它会构建并执行。我仍然认为这意味着什么,不是吗?

配置信息:

Android Studio Bumblebee | 2021.1.1  
classpath 'com.android.tools.build:gradle:7.1.0'  
Gradle: com.jakewharton.timber:timber:5.0.1@aar  
ext.kotlin_version = '1.6.10'   
sourceCompatibility JavaVersion.VERSION_1_8
Run Code Online (Sandbox Code Playgroud)

Sol*_*ata 17

直到问题解决(如问题评论中@n8yn8所述),我通过降级到版本 4.7.1 解决了这个问题:

implementation 'com.jakewharton.timber:timber:4.7.1'
Run Code Online (Sandbox Code Playgroud)

关于Timber 的 GitHub Issue #459有一些进一步的讨论。看来是IDE相关的问题。据确认,目前 Timber 5+ 还没有针对纯 Java 代码的解决方案。


Chi*_*orn 11

对于无需降级依赖版本且无需通过继续应用JakeWharton中的依赖来应用另一个依赖的解决方案,我们可以尝试在Kotlin而不是Java类中配置Timber ,因为警告消息仅出现在 Java 类上。

通过这样做,您可以尝试以下两种选择:

  1. 将您的自定义应用程序类从Java转换为Kotlin
  2. 在Kotlin中创建另一个类并创建新方法来配置Timber配置,而无需将 Java 类转换为 Kotlin 类,以避免任何错误或代码清理。

请参阅我的示例,了解下面的第二个选项:

TimberUtils.kt

import timber.log.Timber

object TimberUtils {

    @JvmStatic
    fun configTimber() {
        if (BuildConfig.DEBUG) {
            Timber.plant(Timber.DebugTree())
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

YourCustomJavaClass.java

@Override
public void onCreate() {
    super.onCreate();
    TimberUtils.configTimber();
}
Run Code Online (Sandbox Code Playgroud)

希望它能解决您的问题。


Emm*_*ali -1

对于那些使用哨兵木材的人

只需使用

implementation "io.sentry:sentry-android:$sentry_version"
implementation "io.sentry:sentry-android-timber:$sentry_version"
Run Code Online (Sandbox Code Playgroud)

删除此依赖项

implementation "com.jakewharton.timber:timber:$timber_version"
Run Code Online (Sandbox Code Playgroud)

对我来说,此修复解决了问题