DisplayLeakActivity不存在

Ral*_*ann 8 android android-studio leakcanary android-studio-2.2

有一段时间我有LeakCanary的问题(​​我认为自Android Studio 2.2以来,但不确定)

我添加了这个依赖项

 dependencies {
   debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2'
   releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2'
   testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2'
 }
Run Code Online (Sandbox Code Playgroud)

当我点击Android Studio中的播放按钮时,我收到以下错误消息:

$ adb shell am start -n "com.example.debug/com.squareup.leakcanary.internal.DisplayLeakActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Error while executing: am start -n "com.example.debug/com.squareup.leakcanary.internal.DisplayLeakActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.debug/com.squareup.leakcanary.internal.DisplayLeakActivity }
Error type 3
Error: Activity class {com.example.debug/com.squareup.leakcanary.internal.DisplayLeakActivity} does not exist.

Error while Launching activity
Run Code Online (Sandbox Code Playgroud)

但是当我用ClassyShark打开apk文件时,我可以看到活动就在那里.

在此输入图像描述

什么出错了?

Tin*_*ran 0

注意这一点

<activity
    android:theme="@style/leak_canary_LeakCanary.Base"
    android:name=".internal.DisplayLeakActivity"
    android:enabled="false"
    android:taskAffinity="com.squareup.leakcanary"
    >

</activity>
Run Code Online (Sandbox Code Playgroud)

问题是 DisplayLeakActivity 的 android:enable 默认为 false。您需要调用LeakCanary.install(this)Application类的onCreate()方法。此示例代码来自LeakCanary 文档

public class ExampleApplication extends Application {

  @Override public void onCreate() {
    super.onCreate();
    LeakCanary.install(this);
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我做到了,但没有帮助 (2认同)