Android Studio zeigt Quellen von API von compileSdkVersion beim Debuggen auf Gerät mit älterer API

Ich debugge mit Android Studio (AS) 1.0.2 mit compileSdkVersion 21 in build.gradle eingerichtet. Bei der Verwendung eines Emulators mit API 21 funktioniert alles gut. Das Problem tritt auf, wenn das Debuggen auf einem Gerät mit API 19 erfolgt. Jede Zeile im Anrufstapel (markiert als 'Frames' in AS) zeigt korrekt den Funktionsnamen, die Quelldatei und die Zeilennummer an, die mit der API 19 übereinstimmt. Wenn ich aber auf einen Klick klicke Der Zeilen, die mit einer der Framework-Quellen (zB Activity.java) übereinstimmen, öffnet AS AS falsch und zeigt die API 21-Version der Datei anstatt der API 19-Version an.

In meinem Android Sdk Ordner habe ich beide ./sources/android-19 und ./sources/android-21

  • Wie man tweet beide URL und Hashtags
  • Wie man die Bildbreitenhöhe basierend auf der Bildschirmgröße im Gridview festlegt
  • Android Actionbar Up-Taste versus System Zurück-Taste
  • Android: getContext (). GetContentResolver () bekommt manchmal NullPointerException
  • Android / gradle: Geben Sie den Versionsnamen aus dem Aroma im Apk-Dateinamen ein
  • Wie benutzt man den Befehl adb pull?
  • Jede Idee, warum AS zeigt die falsche Version der Datei?

    Dinge, die ich versuchte (in Reihenfolge):

    • Zurücksetzen von Android Studio (durch Entfernen von ~ / .AndroidStudio *)
    • Aktualisieren Sie Android Studio auf die neueste Version
    • Beim Ausführen auf Emulator mit API 21 – AS zeigt die richtige Version (21) der Dateien.
    • Ändern von compileSdkVersion auf 19 und Ausführen auf API 19-Gerät – AS zeigt die korrekten Zeilennummern im Anrufstapel an und öffnet die korrekte Version (API 19) der Dateien in der korrekten Zeile.
    • Ändern von compileSdkVersion auf 19 und Ausführen auf API 21 Emulator – AS zeigt im Call Stack die Zeilennummern entsprechend API 21 (was mir als korrektes Verhalten erscheint), aber beim Anklicken drückt AS die API fälschlicherweise auf 19 Version der Datei anstatt der API 21 Version.

    Zusammenfassend lässt sich feststellen, dass beim Anklicken einer Zeile im Aufrufstapel AS die Version der von compileSdkVersion dargestellten Datei und nicht die vom Gerät / Emulator während der Debug-Sitzung verwendete Datei geöffnet wird.

  • Zurück-Taste und erfrischende vorherige Aktivität
  • Hinzufügen von unterem Rand zu ListView letztes Element
  • Descrip "top" -Befehl in Android
  • Floating Action Buttons verschwindet auf Scroll
  • Cursor-Adapter und sqlite Beispiel
  • FloatingActionButton, layout_anchor und layout_gravity
  • 5 Solutions collect form web for “Android Studio zeigt Quellen von API von compileSdkVersion beim Debuggen auf Gerät mit älterer API”

    Beantwortet mit Arbeitslösung hier:

    https://stackoverflow.com/a/32236703/1267536

    Voller Inhalt:

    Ich benutze appcompat Unterstützung Bibliothek ziemlich viel. Das Ändern der compileSdkVersion führt nur zu massiven Kompilierungsfehlern. Wenn du appcompat-21 benutzt hast, musst du gegen api 21 kompilieren oder du wirst Kompilierfehler bekommen.

    Dies funktioniert gut, wenn Sie Debugging gegen Version 21. Aber wenn Sie Debugging auf Jelly Bean (API 17), Ihr Debugger hält Sie fallen auf die API 21 Quelle. Sehr nervig und schwer zu debuggen

    Die Lösung, die ich am Ende habe, ist sehr hacky aber funktioniert! Angenommen, du versuchst, gegen API zu debuggen. Gehen Sie folgendermaßen vor:

    1. Mv $ ANDROID_HOME / Quellen / android-21 $ ANDROID_HOME / Quellen / android-21-orig
    2. Cp $ ANDROID_HOME / Quellen / android-17 $ ANDROID_HOME / Quellen / android-21
    3. Starten Sie Android-Studio so wird es abholen die richtigen Pfade.
    4. Debuggen

    Vergessen Sie nicht, alle Verzeichnisse zurückzugeben, nachdem Sie fertig sind.

    Hier ist ein Android-Studio-Fehlerbericht über dieses Problem: https://code.google.com/p/android/issues/detail?id=183976

    Öffnen Sie Ihr Projekt in Intellij Idea (Android Studio auf der Grundlage davon) und wählen Sie File -> Project Structure... In der Projektierung wählen Sie "Projekt SDK" in die Version, die Sie debuggen und für alle Projektmodule "Projekt SDK" als Modul SDK auswählen müssen. Danach können Sie Debug-Verbindung zu Ihrem Gerät / Emulator und sehen Sie die richtige Android-Quelle.

    Sie brauchen kein Projekt in Intellij Idea zu bauen.

    Versuchen Sie, Ihre App auf einem echten Gerät zu debuggen und mit dem SDK-Level des Geräts zu kompilieren. Die Zeilennummern in den Anrufstacks werden wahrscheinlich für die vom Gerät bereitgestellten Klassen "out of sync" sein.

    Android Studio kann nicht zuverlässig die richtigen Quellen für Ihr laufendes Gerät bereitstellen. Auch wenn es die SDK-Version des Gerätes, auf das Sie debuggen, berücksichtigen würde, könnte die Firmware des Gerätes (und wird auch) aus verschiedenen Quelldateien kompiliert werden und nur mit der API kompatibel sein.

    Ich denke, das ist der Grund, warum Android Studio zeigt nur die kompilieren SDK-Versionen der Klassen von der Ziel-Gerät zur Verfügung gestellt. Es zeigt nur die Referenzimplementierung des Compilers.

    Ändern Sie vorübergehend den Ordnernamen der Quelldateien im SDK. Zum Beispiel haben Sie sich gegen API Level 23 kompiliert, aber das Gerät, das Sie testen und debuggen, ist API Level 15. Dann kompilieren und starten Sie es im Debug-Modus, setzen Sie einen Haltepunkt. Danach wechseln die Namen:

     $SDK_HOME$/sources/android-23/ -> $SDK_HOME$/sources/android-23-temp/ $SDK_HOME$/sources/android-15/ -> $SDK_HOME$/sources/android-23/ 

    Und wenn dies geschieht, dann ist es eine gute Zeit, Ihren Breakpoint zu treffen.

    Diese Lösung setzt voraus, dass Sie beide API-Level-Quellen vom SDK-Manager installiert haben.

    Verknüpfen Sie mit dem Problem , das dieses Problem verfolgt.

    Android Studio 2.2 behebt es und springt zu Quellen der API-Ebene, die dem Gerät entspricht, auf dem Sie tatsächlich laufen (solange Sie diese Quellen installiert haben). Es wurde hier angekündigt.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.