java - quién - tabla de codigo bytecode
''El código fuente no coincide con el código de bytes'' al depurar en un dispositivo (11)
Android Studio toma la versión de origen igual a la Versión de destino en su aplicación. La compilación se realizó con la versión de origen igual a la versión de compilación mencionada anteriormente. Por lo tanto, tenga cuidado de que en su proyecto Versión de compilación == Versión de destino (ajuste el archivo build.gradle del módulo).
Tengo una aplicación que estoy compilando contra el nivel 21 de API:
y luego depúrelo en un dispositivo real con API nivel 23:
El problema es que cuando intento depurar a través de las propias clases del sistema operativo Android, obtengo ''El código fuente no coincide con el código de bytes''. ¿Por qué está pasando esto? El dispositivo de prueba en el que se ejecuta la aplicación es el nivel 23 de API, y el archivo fuente que se está depurando también es el nivel 23.
Estoy realmente confundido ¿Alguien puede explicar por qué estoy viendo este mensaje y cómo puedo solucionarlo?
Debería usar un emulador de Android con el mismo nivel de API que compileSdkVersion. En su caso, debe usar el emulador de Android con el nivel 21 de la API.
Esto también puede suceder en caso de que haya habilitado ProGuard. En buildTypes, establezca minifyEnabled false, shrinkResources false, useProguard false
Hay un problema abierto para esto en AOSP, donde algunos usuarios han dado posibles soluciones: https://code.google.com/p/android/issues/detail?id=225199&sort=-id&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars
Las posibles soluciones dadas allí (a la fecha de esta publicación) son:
- Haga clic en Build-> Clean
- Deshabilite la ejecución instantánea, en Configuración-> Compilación, Ejecución, Implementación
Intenté toda la solución dada aquí y ninguna de ellas funcionó para mí.
En la versión 2019.1.3 simplemente limpié y reconstruí el artefacto y funcionó;
primero
Build -> Build Artifacts... -> <select your artifact> -> Clean
luego haga clic en
Build
o
Rebuild
desde el mismo lugar.
Probé las soluciones dadas aquí mientras trabajaba en una aplicación que usaba Bluetooth Low Energy (BLE). Lo intenté,
- Construcción limpia
- Ejecución instantánea deshabilitada
- Invalidar cachés / reiniciar
todo esto falló.
Lo que hice fue depurar los puntos donde pensé que estaba recibiendo la advertencia, todavía recibí la advertencia pero la aplicación funcionaba bien. Puede ignorar la advertencia.
Probablemente este mensaje de error puede tener más de una causa, mi caso no fue como el del OP, en mi caso esto se debió a una biblioteca de terceros que requería bibliotecas adicionales.
Por ejemplo: agrega manualmente X.jar a su LIB, pero este X.jar requiere que Z.jar funcione.
Me tomó algún tiempo darme cuenta, el mensaje no estaba ayudando en absoluto. Tuve que depurar la aplicación hasta que llegué a la clase de bloqueo, y en esa clase me aseguré de que todas las importaciones estuvieran satisfechas.
(Particularidad: agregué MercadoLibre-0.3.4.jar, que requería commons-httpclient.jar)
¡Espero que esto ayude!
Si usa Gradle, probablemente sea un problema con los cachés de Gradle. ( Reference ) Por desgracia, incluso si corres
gradle --refresh-dependencies
, no está refrescando realmente todas las dependencias. Quedan restos de basura. ( Reference )
Entonces, la variante más segura (pero drástica y larga) es borrar todo el interior del [usuario] /. Gradle / caches. O para encontrar su proyecto problemático allí y borrar solo sus cachés.
Tuve el mismo problema y encontré una solución. Si tiene una línea marcada en rojo, le dará este error, pero si desmarca todas las líneas, funcionará normalmente.
por marcado quiero decir cuando haces clic en el lado izquierdo donde están los números de línea y resalta la línea.
Si eso no está claro, aquí hay fotos.
ir de:
línea marcada
a:
línea no marcada
Vaya a Configuración del proyecto> Artefactos. Seleccione el artefacto que tiene el problema. Hay una opción "Incluir en la compilación del proyecto". Esto debe ser verificado (habilitado). Para versiones anteriores de IntelliJ, esta opción es "Make on build".
aqui esta mi solucion
Si tiene más de una biblioteca de versiones, puede ser útil.
- establecer un punto de interrupción en el código fuente de lib
- deje que el código se ejecute hasta el punto de interrupción
-
obtendrás estos consejos
-
haz clic en el ícono de la flecha
-
obtendrás esto
-
haga doble clic para seleccionar la lib correcta (normalmente la versión más alta de la lib es correcta)
si ha hecho clic en el botón "deshabilitar" por error, puede habilitarlo en la configuración del depurador
Si no tiene los consejos en el paso 3, tal vez pueda verificar si ha verificado las opciones de configuración.