有一段时间我有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文件时,我可以看到活动就在那里。
出了什么问题?
答案 0 :(得分:2)
当我尝试在我的应用中启用LeakCanary时,会发生这种情况。
在我的Manifest中,我定义了一些:
<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"
如果您不需要,只需删除该行即可。希望这有帮助!
答案 1 :(得分: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。您需要在Application类的onCreate()方法中调用LeakCanary.install(this)
。
此示例代码来自LeakCanary documentation
public class ExampleApplication extends Application {
@Override public void onCreate() {
super.onCreate();
LeakCanary.install(this);
}
}