'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:
et ensuite le déboguer sur un appareil réel avec le niveau API 23:
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.
je suis vraiment confus. Est-ce que quelqu'un peut expliquer pourquoi je vois ce message et comment je peux le corriger?
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
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.
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.
voici ma solution
si vous avez plus d'une version de librarys, cela peut aider.
- définir un point de rupture sur le code source de la FRB
- laisser le code à exécuter pour le point d'arrêt
-
vous aurez obtenu cette astuces
-
cliquez sur l'icône flèche
-
vous aurez obtenu ce
-
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
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.
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".
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!
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
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).