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

6ju8rftf  于 2023-02-11  发布在  Android
关注(0)|答案(4)|浏览(177)

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

无法解析方法“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()); }  
    }  
}

但是它构建并执行。我仍然认为它意味着一些东西,不是吗?
配置信息:

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
but5z9lq

but5z9lq1#

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

implementation 'com.jakewharton.timber:timber:4.7.1'
cnwbcb6i

cnwbcb6i2#

在应用级build.gradle文件中,设置以下jakeharton timber版本:

implementation 'com.jakewharton.timber:timber:4.7.1'

然后在应用程序类onCreate()方法中:
对于Kotlin:

if (BuildConfig.DEBUG) {
        Timber.plant(DebugTree())
    } else {
        Timber.plant(ReleaseTree())
    }

对于Java:

if (BuildConfig.DEBUG) {
        Timber.plant(new DebugTree());
    } else {
        Timber.plant(new ReleaseTree());
    }

内部释放树()类Kotlin:

inner class ReleaseTree : Timber.Tree() {
    override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
        if (priority == Log.VERBOSE || priority == Log.DEBUG) {
            return
        }

        // log your crash to your favourite
        // Sending crash report to Firebase CrashAnalytics

        // FirebaseCrash.report(message);
        // FirebaseCrash.report(new Exception(message));
    }
}

内部发布树()类Java:

class ReleaseTree extends Timber.Tree {
@Override
protected void log(int priority, String tag, String message, Throwable t) {
    if (priority == Log.VERBOSE || priority == Log.DEBUG) {
        return;
    }

    // log your crash to your favourite
    // Sending crash report to Firebase CrashAnalytics

    // FirebaseCrash.report(message);
    // FirebaseCrash.report(new Exception(message));
}

}

i86rm4rw

i86rm4rw3#

对于不降级依赖项版本且无需通过继续应用***JakeWharton***中的依赖项来应用另一依赖项的变通方案,我们可以尝试在***Kotlin***中配置***Timber***,而不是在***Java***类中配置***,因为警告消息仅出现在Java类中。
通过这样做,您可以尝试以下两个选项:
1.将自定义应用程序类从 Java 转换为 * Kotlin *
1.在 * Kotlin * 中创建另一个类,并创建新方法来配置 Timber,示例如下:

  • 木材实用工具.kt*
import timber.log.Timber

object TimberUtils {

    @JvmStatic
    fun configTimber() {
        if (BuildConfig.DEBUG) {
            Timber.plant(Timber.DebugTree())
        }
    }
}
  • 您的自定义Java类.java*
@Override
public void onCreate() {
    super.onCreate();
    TimberUtils.configTimber();
}

希望它能解决你的问题。

kcugc4gi

kcugc4gi4#

对于使用sentry-timber的用户
就用

implementation "io.sentry:sentry-android:$sentry_version"
implementation "io.sentry:sentry-android-timber:$sentry_version"

删除此依赖项

implementation "com.jakewharton.timber:timber:$timber_version"

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

相关问题