8

一段时间以来,我遇到了 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'
 }

当我单击 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

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

在此处输入图像描述

怎么了?

4

2 回答 2

2

当我尝试在我的应用程序中启用 LeakCanary 时,就会发生这种情况。

在我的清单中,我以某种方式定义了:

<application
    android:name="sg.swiftninja.DriverApplication"
    android:allowBackup="false"
    tools:node="replace"  // <-- THIS
    android:label="@string/app_name"
    android:theme="@style/AppTheme">

我认为问题出tools:node="replace"在我的应用程序标签中。

我通过替换解决了这个问题:

tools:node="replace" 

tools:replace="android:allowBackup" // or whatever nodes like this tools:replace="icon, label"

或者,如果您不需要它,只需删除该行。希望这可以帮助!

于 2016-12-12T05:01:26.930 回答
0

注意这一点

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

</activity>

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

public class ExampleApplication extends Application {

  @Override public void onCreate() {
    super.onCreate();
    LeakCanary.install(this);
  }
}
于 2016-06-28T14:13:00.210 回答