2016-06-19 14 views
8
existieren

Seit einer Weile habe ich Probleme mit LeakCanary haben (ich glaube, da Android Studio 2.2, aber nicht sicher)DisplayLeakActivity nicht

ich hinzugefügt mit diesem

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' 
} 

Abhängigkeiten Wenn ich auf den Play-Button in Android Studio bekomme ich diese Fehlermeldung:

$ 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 

Aber wenn ich die apk-Datei mit ClassyShark öffnen kann ich sehen, dass die Aktivität gibt.

enter image description here

Was ist falsch gehen?

+2

Haben Sie Leakcanary auf Anwendungsebene initialisiert? 'LeakCanary.install (this);' – jitinsharma

+2

Ja, ich denke, es ist kein LeakCanary-Problem, es ist eher ein Android Studio-Problem, denn wenn ich es auf der Konsole baue funktioniert alles gut. Schließlich habe ich es gelöst, indem ich angegeben habe, welche Aktivität Android Studio starten soll. –

+2

Kannst du mehr Details @RalphBergmann geben? – toobsco42

Antwort

0

Hinweis Dieses

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

</activity> 

Das Problem ist DisplayLeakActivity Android: enable standardmäßig falsch ist. Sie müssen in der onCreate() - Methode der Application-Klasse LeakCanary.install(this) aufrufen. Dieser Beispielcode ist von LeakCanary documentation

public class ExampleApplication extends Application { 

    @Override public void onCreate() { 
    super.onCreate(); 
    LeakCanary.install(this); 
    } 
} 
+2

Ich habe es gemacht, aber es hilft nicht –

+1

Haben Sie im Manifest auf Ihre Anwendungsklasse verwiesen? –

+0

Das Setup ist vollständig und korrekt, ich denke, es ist ein Android Studio-Problem –

1

Das ist mir passiert, wenn ich versuche, LeakCanary in meiner Anwendung zu ermöglichen.

Irgendwie in meinem Manifest I definiert:

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

Ich denke, das Problem mit tools:node="replace" in meiner Anwendung Tag ist.

Ich reparierte diese durch Ersetzen:

tools:node="replace" 

mit

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

Oder einfach die Zeile entfernen, wenn Sie es nicht brauchen. Hoffe das hilft!