Android AppWidget Timber 未记录

Android AppWidget Timber not logging

我正在尝试从标准 Log 切换到 Timber,以便在将我的应用程序部署到 Google Play 时轻松删除日志消息,但它不起作用

build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "org.myapp"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
}

buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.3'
    }
}

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.jakewharton.timber:timber:3.1.0'
}

MyApp.java

package org.myapp;

...

import timber.log.Timber;
import static timber.log.Timber.DebugTree;

public class MyApp extends AppWidgetProvider {

  @Override
  public void onEnabled(Context context) {
    super.onEnabled(context);

    if (MyBuildConfig.DEBUG) {
      Timber.plant(new DebugTree());
    } else {
      //Timber.plant(new CrashReportingTree());
    }

    Timber.d("MyApp.onEnabled");
  }

MyBuildConfig.java

package org.myapp;

public class MyBuildConfig {
  public static final boolean DEBUG = true;
}

应用程序可以很好地编译

./gradlew assembleDebug

但是做的时候

adb logcat | grep -i thing

我的调试语句不存在。

我仍然希望在调试 apk 中看到调试消息,但在发布 apk 中看不到,有什么问题吗?

我相信这是因为 Timber 在您的 AppWidgetProvider 中找不到标签。 试试这样种树:

Timber.plant(new DebugTree());
Timber.tag("Your_TAG");
Timber.d("...");

移动

Timber.plant(new DebugTree());

onEnabledonUpdate 解决了问题,因为 onEnabled 没有被调用,因为 AppWidget 已经安装