'Le code Source ne correspond pas au bytecode' lors du débogage d'un périphérique

j'ai une application que je compile au niveau API 21: enter image description here

et ensuite le déboguer sur un appareil réel avec le niveau API 23:

enter image description here

le problème est que lorsque j'essaie de déboguer à travers les propres classes de L'OS Android, je reçois 'le code Source ne correspond pas au bytecode'. Pourquoi est-ce arrivé? Le dispositif d'essai sur lequel l'application est lancée est de niveau API 23, et le fichier source en cours de débogage est aussi de niveau 23. *enter image description here*

je suis vraiment confus. Est-ce que quelqu'un peut expliquer pourquoi je vois ce message et comment je peux le corriger?

40
demandé sur Crocodile 2016-10-12 07:52:43

8 réponses

il y a une question ouverte pour cela dans L'AOSP, où certains utilisateurs ont donné des solutions possibles: https://code.google.com/p/android/issues/detail?id=225199&sort=-id&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars

Le potentiel des solutions de y (à compter de la date de ce post):

  • , Cliquez Sur Build->Clean
  • désactiver L'exécution instantanée, dans les paramètres - > construire, exécuter, déployer
23
répondu Michael Hoffmann 2016-11-27 02:51:06

vous devez utiliser un émulateur Android avec le même niveau d'api que le compileSdkVersion. Dans votre cas, vous devez utiliser Android emulator avec api Niveau 21.

4
répondu Uriel Frankel 2018-01-09 19:55:06

si vous utilisez Gradle, c'est probablement un problème avec les caches Gradle. ( référence ). Hélas, même si vous courez

gradle --refresh-dependencies

, il n'est pas rafraîchissant vraiment toutes les dépendances. Certains déchets reste. ( référence ).

donc, la variante la plus sûre (mais drastique et longue) est de nettoyer tout l'intérieur de [l'utilisateur]/.gradle/caches. Ou pour trouver votre problème de projet et d'effacer seulement ses caches.

3
répondu Gangnus 2017-08-28 08:37:01

voici ma solution

si vous avez plus d'une version de librarys, cela peut aider.

  1. définir un point de rupture sur le code source de la FRB
  2. laisser le code à exécuter pour le point d'arrêt
  3. vous aurez obtenu cette astuces

    enter image description here

  4. cliquez sur l'icône flèche

  5. vous aurez obtenu ce

    enter image description here

  6. double clic pour sélectionner le bon lib (normalement la version la plus haute lib est correcte)

    si vous avez cliqué sur le bouton" Désactiver "par erreur , vous pouvez l'activer dans le réglage du débogueur

enter image description here

si vous n'avez pas les conseils à l'étape 3, peut-être Pouvez-vous vérifier que vous avez vérifié les options de réglage.

2
répondu Allen 2018-04-29 05:27:38

allez à Paramètres du projet > artefacts. Sélectionnez l'objet qui a le problème. Il y a une option "Inclure dans la construction du projet". Ce doit être cochée(activée). Pour les versions plus anciennes D'IntelliJ, cette option est "Make on build".

0
répondu Swathi 2017-06-29 14:55:38

probablement ce message d'erreur peut avoir plus d'une cause, mon cas n'était pas comme celui de L'OP, dans mon cas cela était dû à une bibliothèque tierce partie qui a exigé des bibliothèques supplémentaires.

par exemple: vous ajoutez manuellement X.jar à ta vie, mais ça X.jar nécessite Z.jar au travail.

il m'a fallu un moment pour comprendre que le message n'aidait pas du tout. J'ai dû déboguer l'application jusqu'à ce que j'atteigne la classe crashing, et dans cette classe assurez-vous que toutes les importations étaient satisfaits.

(notamment: J'ai ajouté MercadoLibre-0.3.4.jar, qui nécessitait commons-httpclient.jar)

Espérons que cette aide!

0
répondu Federico Alvarez 2017-09-27 13:51:41

j'ai eu le même problème et trouvé une solution. Si vous avez une ligne marquée en rouge, cela vous donnera cette erreur, mais si vous désactivez toutes les lignes, cela fonctionnera normalement.

par marqué je veux dire quand vous cliquez sur le côté gauche où les numéros de ligne sont et il met en évidence la ligne. Si ce n'est pas clair, voici les photos.

aller de: ligne marquée de: ligne non marquée

0
répondu Joe Giusti 2018-10-04 16:05:08

Android Studio prend la version source égale à la Version cible dans votre application. Compilation effectuée avec une version source égale à la version de compilation mentionnée ci-dessus. Donc, prenez soin que dans votre projet Compiler Version = = Version cible (ajuster la construction du module.gradle fichier).

-1
répondu medynets 2018-07-20 13:57:43