93 votes

"Le code source ne correspond pas au bytecode" lors du débogage sur un périphérique

J'ai une appli qui je suis de la compilation à l'encontre de l'API de niveau 21: enter image description here

et ensuite le débogage sur un périphérique réel avec l'API de niveau 23:

enter image description here

Le problème, c'est quand j'essaie de débogage à travers le système d'exploitation Android OS propres classes, je reçois le code Source ne correspond pas à la bytecode'. Pourquoi est-ce arrivé? Le dispositif de test de l'application est en cours d'exécution de l'API de niveau 23, et le fichier source en cours de débogage est niveau 23. *enter image description here*

Je suis vraiment confus. Quelqu'un peut-il expliquer pourquoi je vois ce message et comment je peux résoudre ce problème?

49voto

Michael Hoffmann Points 713

Il y a un sujet ouvert à cet effet dans PSBA, 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'Instant, dans Paramètres->Construire, l'Exécution, le Déploiement

29voto

Allen Points 701

voici ma solution

si vous avez plus d'une version de la bibliothèque, il peut permet.

  1. définissez un point d'arrêt sur la lib code source
  2. laissez le code à exécuter pour le point d'arrêt
  3. vous aurez obtenu cette conseils

    enter image description here

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

  5. vous aurez obtenu ce

    enter image description here

  6. double-cliquez pour sélectionner la bonne lib (normalement la version la plus récente lib est correct)

    si vous avez cliquez sur "désactiver" bouton par erreur , vous pouvez l'activer dans la configuration du débogueur

enter image description here

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

19voto

Uriel Frankel Points 2143

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

5voto

Gangnus Points 7646

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

gradle --refresh-dependencies

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

Donc, le plus sûr (mais drastiques et long) variante est d'effacer tous à l'intérieur de l' [utilisateur]/.gradle/caches. Ou pour trouver votre problème de projet et d'effacer seulement ses caches.

0voto

Swathi Points 11

Accédez à Paramètres du projet> Artefacts. Sélectionnez l'artefact qui a le problème. Il existe une option "Inclure dans la construction du projet". Cela doit être vérifié (activé). Pour les anciennes versions d'IntelliJ, cette option est "Créer à la compilation".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X