J'ai une application que je compile par rapport au niveau 21 de l'API:
puis déboguez-le sur un périphérique réel avec le niveau 23 de l'API:
Le problème est que lorsque j'essaie de déboguer à travers les classes du système d'exploitation Android, je reçois le message "Le code source ne correspond pas au bytecode". Pourquoi cela arrive-t-il? Le périphérique de test sur lequel l'application est en cours d'exécution est le niveau 23 de l'API et le fichier source en cours de débogage est également au niveau 23 .
Je suis vraiment confus. Quelqu'un peut-il expliquer pourquoi je vois ce message et comment je peux le réparer?
Il existe un problème non résolu dans AOSP, dans lequel certains utilisateurs ont proposé des solutions: https://code.google.com/p/Android/issues/detail?id=225199&sort=-id&colspec=ID%20Type % 20Status% 20Propriétaire% 20Sommaire% 20Etoiles
Les solutions potentielles indiquées ici (à la date de cet article) sont:
voici ma solution
si vous avez plus d'une bibliothèque de versions, cela peut aider.
vous aurez ces conseils
cliquez sur l'icône de flèche
vous aurez ceci
double-cliquez pour sélectionner la bonne bibliothèque (normalement, la version la plus élevée est correcte)
si vous avez cliqué par erreur sur le bouton "désactiver", vous pouvez l'activer dans les paramètres du débogueur
si vous n'avez pas reçu les astuces à l'étape 3, vous pouvez peut-être vérifier si vous avez coché les options de réglage.
Vous devez utiliser un émulateur Android avec le même niveau d'api que compileSdkVersion . Dans votre cas, vous devez utiliser un émulateur Android avec le niveau d'api 21.
Si vous utilisez Gradle, c'est probablement un problème avec les caches Gradle. ( Référence ). Hélas, même si tu cours
gradle --refresh-dependencies
, il n’est pas vraiment rafraîchissant toutes les dépendances. Quelques restes d'ordures. ( Référence ).
Ainsi, la variante la plus sûre (mais radicale et longue) consiste à effacer tout ce qui se trouve à l'intérieur de [utilisateur] /. Gradle/caches. Ou pour trouver votre projet problème là-bas et effacer uniquement ses caches.
Ce message d'erreur peut probablement avoir plus d'une cause. Mon cas ne ressemblait pas à celui de l'OP. Dans mon cas, cela était dû à une bibliothèque tierce qui nécessitait des bibliothèques supplémentaires.
Par exemple: vous ajoutez manuellement X.jar à votre LIB, mais ce X.jar nécessite Z.jar pour fonctionner.
Il m'a fallu un certain temps pour comprendre, le message ne m'aidait pas du tout. J'ai dû déboguer l'application jusqu'à ce que j'aie atteint la classe qui tombe en panne et m'assurer que toutes les importations sont satisfaites.
(Particualry: J'ai ajouté MercadoLibre-0.3.4.jar, qui demandait commons-httpclient.jar)
J'espère que cela t'aides!
Cela peut également se produire si vous avez activé ProGuard. Dans buildTypes, définissez minifyEnabled false, shrinkResources false, useProguard false
J'ai essayé toute la solution donnée ici et aucune d'entre elles n'a fonctionné pour moi. Dans la version 2019.1.3, je viens de nettoyer et de reconstruire un artefact et cela a fonctionné; faites d'abord Build -> Build Artifacts... -> <select your artifact> -> Clean
puis cliquez Build
ou Rebuild
à partir du même endroit.
J'ai essayé les solutions données ici tout en travaillant sur une application utilisant Bluetooth Low Energy (BLE). J'ai essayé,
tout cela a échoué.
Ce que j’ai fait, c’est de déboguer les points où je pensais avoir l’avertissement, mais j’ai toujours eu l’avertissement, mais l’application fonctionnait bien. Vous pouvez ignorer l'avertissement.
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".