2016-06-19 20 views
8

Da un po 'ho problemi con LeakCanary (credo dal Android Studio 2.2, ma non è sicuro)DisplayLeakActivity non esiste

ho aggiunto che con questa dipendenze

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

Quando clicco sul pulsante di riproduzione in Android Studio ricevo questo messaggio di errore:

$ 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 

Ma quando ho aperto il file apk con ClassyShark posso vedere che l'attività è lì.

enter image description here

cosa è che non va?

+2

Avete inizializzato il leakcanary a livello di applicazione? 'LeakCanary.install (this);' – jitinsharma

+2

Sì, penso che non sia un problema di LeakCanary, è più un problema di Android Studio perché quando lo compro sulla console tutto funziona correttamente. Finalmente l'ho risolto specificando quale attività deve iniziare Android Studio –

+2

Puoi fornire maggiori dettagli @RalphBergmann? – toobsco42

risposta

0

Avviso questo

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

</activity> 

Il problema è Android di DisplayLeakActivity: abilitare è false per impostazione predefinita. Devi chiamare lo LeakCanary.install(this) nel metodo onCreate() della classe Application. Questo codice di esempio è da LeakCanary documentation

public class ExampleApplication extends Application { 

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

L'ho fatto ma non aiuta –

+1

Hai fatto riferimento alla tua classe di applicazione nel manifesto? –

+0

l'installazione è completa e corretta, penso che sia un problema di Android Studio –

1

Questo succede a me quando cerco di abilitare LeakCanary nella mia app.

In qualche modo nel mio manifesto ho definito:

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

Credo che il problema è con tools:node="replace" nel mio tag applicazione.

Ho fissato questo sostituendo:

tools:node="replace" 

con

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

O semplicemente rimuovere la riga se non ne hai bisogno. Spero che questo ti aiuti!