Nie można debugować aplikacji w Android Studio


81

Tworzę aplikację w Android Studio, teraz próbuję ją debugować przez adb. Kiedy klikam słowo Android i logo na dolnym pasku, pojawia się logcat i rozpoznaje moje urządzenie. Wtedy widzę to:

zrzut ekranu

Co muszę zrobić z moją aplikacją, aby umożliwić jej debugowanie?

FYI już wcześniej rozwijało tę aplikację w Eclipse i adb działało dobrze.


Znalazłeś rozwiązanie?
Paul,

Odinstalowanie aplikacji z urządzenia i ponowne uruchomienie jej ze studia Android rozwiązało mój problem
Ahmad Behzadi

3
Miałem dzisiaj problem, punkty przerwania nie mogą zatrzymać programu. A to z powodu ustawienia w build.gradle. Ustawiłem typ kompilacji debugowania z minifyEnabled jest true, usuń to i punkt przerwania działał.
zamek bai

spójrz na moją odpowiedź tutaj . to może rozwiązać problem
Muahmmad Tayyib,

Odpowiedzi:


85

Na pasku narzędzi znajduje się ikona debugowania . Wygląda jak mały „błąd” i znajduje się tuż obok ikony Uruchom (która wygląda jak przycisk odtwarzania). Spróbuj uruchomić aplikację za pomocą tego.

Kliknij tutaj, aby debugować

Edycja: poniższe elementy są przestarzałe w przypadku korzystania z Android Studio z Gradle.

W pliku AndroidManifest.xml znajduje się również flaga debugowania . Znajduje się pod tagiem aplikacji i powinien mieć wartość „true” w następujący sposób:

<application android:debuggable="true">
</application>

1
Czy możemy przejść po jednej linii na raz, tak jak podczas zaćmienia? jeśli możesz, jak to zrobić?
Ari R. Fikri

1
Oczywiście że możesz. Po trafieniu w punkt przerwania zostanie wyświetlone okno debugowania, a pasek narzędzi u góry zawiera różne polecenia kroków. Możesz także skonfigurować różne skróty klawiaturowe debugowania z File-> Settings-> Keymap- znajdują się one pod Main menu-> Run. Zobacz to, aby uzyskać więcej informacji.
free3dom

7
Najnowsza wersja Android Studio nie wymaga ustawiania androida: debuggable, w rzeczywistości pokazuje zawijas, który sugeruje ustawienie go w konfiguracji, a nie w manifeście. Pomaga to uniknąć przypadkowego opublikowania aplikacji z informacjami debugowania.
Soundararajan

3
Nie działa 2015, build.gradle umieścił buildTypes {debug {debuggable true

2
to praca dla mojego. Umieściłem w manifeście <application android: debuggable = "true"> </application> i debuguję idealnie. Dzięki
Andy Luis

111

Rozwiązałem ten problem po wykonaniu następujących czynności:

Idź do Narzędzia ==> android ==> Wyłącz integrację ADB i włącz ją ponownie.

Następnie odłącz USB od urządzenia i podłącz ponownie.

Na koniec naciśnij Shift + F9


To mi pomogło. Nagle debug przestał działać, po czym działał ponownie.
Rui Santos,

Nadal pracuję do dziś, próbowałem zrestartować i wszystko.
Mathijs Segers

1
Musiałem tylko zamknąć i ponownie otworzyć android studio dla tej instancji projektu, aby błąd działał: /
Rachael

18
W Android Studio w wersji 3.1.3 nie ma takiej pozycji menu o nazwie „Narzędzia ==> android” i nie mogę nigdzie znaleźć tej opcji
James Watkins,

1
Brak opcji „adb” w menu Android Studio 4
spartygw

34

Kolejna rzecz, na którą należy uważać (zrobiłem to, więc wiem, duh). Nie włączaj Proguard do debugowania!


6
dzięki i musiałem uczynić minifyEnabled false i shrinkResources false
Janardhan R

16

Miałem też losowo ten problem nawet po wielokrotnym debugowaniu w Android Studio. Pewnego dnia debugger po prostu nie mógł się podłączyć. Musiałem tylko wyjść z Android Studio i ponownie go otworzyć, a debugger znów zaczął działać.


16
    <application android:debuggable="true">
</application>

To już nie działa! Nie ma potrzeby używania debuggable = "true" w manifeście.

Zamiast tego należy ustawić warianty kompilacji na „debugowanie”

Tryb debugowania

W Android Studio przejdź do BUILD -> Select Build Variant

Teraz spróbuj debugować. Dzięki


W menu budowania nie ma opcji „Wybierz wariant budowy”.
Pete Alvin

14

To zadziałało dla mnie:

  1. Zamknij Android Studio.
  2. Otwórz powłokę i napisz:

    adb kill-server

    adb start-server


Właśnie tego szukałem. Wcześniej mogłem to zrobić za pomocą prostego adb reconnectpolecenia, ale już tego nie robi w AS 3.1 (może robię coś źle lub za mało?
VictorB

Przy okazji, to rozwiązanie działało dla mnie bez zamykania AS lub sesji terminalowej.
VictorB

11

Upewnij się, że masz włączoną integrację ADB.

W Menu: Narzędzia -> Android -> Włącz integrację ADB (v1.0)


11

Jeśli Twoja aplikacja była debugowalna i nagle przestaje być debugowalna, oto moje rozwiązanie

  1. wyłącz i włącz USB debugprzełącznik w telefonie.
  2. Odinstaluj swoją aplikację.
  3. kliknij Uruchom w Android Studio.

8

Jednym z przypadków, w których nie można debugować aplikacji w Android Studio, jest wybranie wariantu kompilacji „wydanie”. Przydarzyło mi się - Gradle buduje wersję wydania aplikacji (której nie można debugować), a następnie Android Studio nie udaje się połączyć debugera.


1
Wiele razy mnie to zaskoczyło, nawet w innych IDE. Uważam, że możliwość debugowania wersji jest konfigurowalna w większości IDE i czasami jest zalecana, jeśli chcesz dołączyć debuger do wydanych aplikacji.
wisk

7

Czasami mi się to zdarza i jeszcze nie wiem dlaczego. Żadne z już opublikowanych rozwiązań nie zadziałało dla mnie. Jedyne, co mi pasuje, to:

  1. Odinstaluj aplikację z urządzenia.
  2. Czysty projekt. „Kompiluj -> Wyczyść projekt”.
  3. Przebuduj i zainstaluj.

7

Ikona „Dołącz debugger do procesu Androida” powinna być używana w przypadku ustawienia niestandardowego „android: proces” w pliku Manifest.
W moim przypadku powinienem wybrać odpowiedni proces i kliknąć przycisk OK zaraz po pojawieniu się okna dialogowego „Czekaj na debugger”.
wprowadź opis obrazu tutaj


okropne obejście, ale jedyna rzecz, która teraz działa dla mnie, DZIĘKI !!!
Jules

Pracował dla mnie, mimo że nie miałem niestandardowego „android: proces” w moim pliku Manifest.
Jason Bowers

to było rozwiązanie dla mnie. Dzięki
gmartinsnull

4

Sprawdź, czy projekt aplikacji jest zaznaczony w menu rozwijanym obok przycisku debugowania. Czasami Android Studio po prostu resetuje ten wybór ...

wprowadź opis obrazu tutaj


4

Jeśli włączysz

<application android:debuggable="true">
</application>

W pliku manifest.xml aplikacji upewnij się, że wyłączyłeś go podczas generowania ostatecznego podpisanego pliku APK, ponieważ może to służyć jako luka w zabezpieczeniach dla atakujących. Używaj go tylko wtedy, gdy tylko jedna z aplikacji nie wyświetla dzienników. Jednak przed rozważeniem tej opcji spróbuj tego:

Przejdź do narzędzi w Android Studio

 Tools==>android==>disable adb integration and again enable it

3

Upewnij się również, że nie używasz innych aplikacji, które mogą również korzystać z ADB, na przykład Eclipse.


3

Przetestowałem wszystkie sposoby i żaden z nich nie działał !!!

w końcu musiałem zmienić port adb i zadziałało. najpierw zabij serwer adb, jak poniżej:

adb kill-server

następnie uruchom go ponownie, używając innego portu

adb -P 5038 start-server

3

Zrobiłem czystą kompilację za pomocą poniższego polecenia .. Zaskakująco działało.

sh gradlew czysta budowa

Miejmy nadzieję, że ktoś uzyska pomoc!


1
W której konsoli musimy to uruchomić?
DmitryBoyko

Uruchom to polecenie w terminalu Android Studio lub przejdź do swojego projektu z terminala zewnętrznego
Haider Ali

3

W moim przypadku w pobliżu dowolnej linii pojawiło się czerwone kółko z krzyżykiem i czerwoną linią z komunikatem: „Nie znaleziono kodu wykonywalnego w linii ...”, jak w przypadku punktu przerwania gradle w Android studio. W linii nie znaleziono kodu wykonywalnego .

Wystąpił problem po aktualizacji build.gradle. Dodaliśmy obsługę Kotlina, więc liczba metod przekroczyła 64K. Problematyczne linie:

buildTypes {
    debug {
        minifyEnabled true

Zmień je na:

buildTypes {
    debug {
        minifyEnabled false
        debuggable true

Następnie zsynchronizuj gradle za pomocą przycisku „Synchronizuj projekt z plikami Gradle”. Jeśli po ponownym uruchomieniu aplikacji pojawi się błąd: „Błąd: liczba odwołań do metod w pliku .dex nie może przekraczać 64 KB. Dowiedz się, jak rozwiązać ten problem na https://developer.android.com/tools/building/ multidex.html ”, to tak jak w . Liczba odwołań do metod w pliku .dex nie może przekraczać 64 tys. API 17 dodaj następujące wiersze do build.gradle:

android {

    defaultConfig {
        ...

        // Enabling multidex support.
        multiDexEnabled true
    }
    ...
}

dependencies {
    implementation 'com.android.support:multidex:1.0.2'
}

AKTUALIZACJA

Zgodnie z https://developer.android.com/studio/build/multidex.html wykonaj następujące czynności, aby włączyć obsługę wieluidex poniżej Androida 5.0. W przeciwnym razie nie uruchomi się na tych urządzeniach.

Otwórz AndroidManifesti znajdź tag <application>. Near android:name=to odwołanie do klasy Application. Otwórz tę klasę. Rozszerz klasę Application o MultiDexApplication:

public class MyApplication extends MultiDexApplication { ... }

Jeśli klasa aplikacji nie jest ustawiona, napisz:

<application
        android:name="android.support.multidex.MultiDexApplication" >
    ...
</application>

2

Pamiętaj, aby włączyć tryb programisty i debugowanie USB na urządzeniu lub emulatorze. (Łatwo o tym zapomnieć podczas konfigurowania nowego).


2

Powinieneś także mieć aktywne Narzędzia-> Android-> Włącz integrację ADB.


2

Udało mi się to naprawić, przechodząc do Uruchom -> Edytuj konfiguracje, wybierając mój projekt, wybierając kartę Debugger, a następnie zmieniając „Typ debugowania” z „Auto” na „Podwójny”:wprowadź opis obrazu tutaj


1

To rozwiązało mój problem. Odinstaluj aplikację z urządzenia i uruchom ją ponownie przez Android Studio.


1

U mnie stało się tak, gdy korzystałem z Proguard, więc wypróbowując wszystkie rozwiązania, wyczyściłem projekt i nacisnąłem przycisk debugowania na Android Studio i zaczął debugować


1
Miałem do czynienia z tym problemem w Android Studio 4.1 i Twoje rozwiązanie mi pomogło. Dzięki
Buckstabue,

1

W moim przypadku musiałem usunąć proguard w debugowaniu typu kompilacji, całkowicie czyszcząc plik tekstowy proguard-rules.proi tworząc minifyEnabled falseplik build.gradle

  debug {
            debuggable true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

1
<application android:debuggable="true">
</application>

Powyższy kod nie jest już rozwiązaniem. Musisz włączyć debugowanie w pliku build.gradle. Jeśli masz różne typy buildTypes, upewnij się, że ustawiłeś „debuggable true” w jednym z typów buildów. Oto przykładowy kod z jednego z moich projektów.

buildTypes {
    debug {
        debuggable true
    }

    release {
        debuggable false
    }
}

** Usunąłem inne wiersze w buildTypes, które nie są związane z tym pytaniem z mojego pliku Gradle.

Upewnij się również, że podczas debugowania wybrałeś prawidłowy wariant kompilacji w swoim studiu Android.

wprowadź opis obrazu tutaj


1

Przez lata wielokrotnie odwiedzałem ten wątek i zawsze pomagała mi inna odpowiedź. Tym razem stwierdzam, że to mój hub USB uniemożliwiał poprawne działanie debuggera. Choć brzmi to dziwnie, zamiast podłączać telefon do komputera przez koncentrator USB, musiałem podłączyć go bezpośrednio do mojego Maca i debugowanie zaczęło działać.


1

W moim przypadku zapomniałem minifyEnabled = true i shrinkResources = true w moim buildType debugowania. Zmieniam te wartości na fałsz, znowu działa!

wprowadź opis obrazu tutaj


0

Oto kilka błędów, które mogą trochę przyłapać: Całkiem łatwo jest przypadkowo wpisać filtr w oknie wyjściowym logcat (pole tekstowe z lupą) i zapomnieć o nim. To, co potencjalnie odfiltruje wszystkie dane wyjściowe i sprawi, że będzie wyglądać, jakby nic tam nie było.


0

W moim przypadku miałem ten sam problem, ponieważ próbuję debugować podpisany apk. W mojej konfiguracji gradle stworzyłem różne warianty kompilacji i próbowałem debugować wersję wydania za pomocą produkcyjnego pliku keystore.jks


0

Co działało dla mnie w Android Studio 3.2.1

Było:

RUN -> Attach debugger to Android Process --> com.my app


0

Uruchom ponownie serwer adb w Android Studio: Narzędzia -> „ Rozwiązywanie problemów z połączeniem urządzenia

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.