java - poner - agregar titulo android studio
El depurador de Android Studio resalta las lĂneas incorrectas (3)
Este es un problema con dx, que es la parte de la compilación que convierte sus archivos Java .class en archivos .dx para empaquetarlos en Android. De acuerdo a esto:
https://code.google.com/p/android/issues/detail?id=34193
si una función tiene múltiples rutas de retorno, dx fusiona la instrucción de retorno en una sola instrucción de retorno, por lo que durante la depuración, el depurador no puede decir a qué línea pertenece una devolución y las cosas saltan. Esto corresponde a lo que veo cuando trato de reproducir su problema: cada vez que pasa por el ciclo, hace la comprobación if (a == 3)
, salta al return 0
al final y luego salta de regreso al ciclo. Está viendo que la última return 0
se fusionó con la return retval
del return retval
en el medio del ciclo.
Dudo que esto se solucione en el corto plazo, por lo que puede que tengas que aprender a vivir con él. Lo siento, sé que es un poco loco.
No puedo ver nada funcionalmente incorrecto en términos de lo que se ejecuta, pero desperdicié una hora probando mi código y el compilador está haciendo lo que deberían.
Considera este código:
public int getAnswer(int a) {
int retval = 18;
int x = 25;
int y = 50;
while (a-- > 0) {
if (a == 3) {
retval = a;
return retval;
}
}
x = 10;
y = 20;
return 0;
}
Llamado con
int theAnswer = getAnswer(6);
Punto de interrupción tanto de las líneas que contienen return
como antes de ejecutar el código, intente y pronostique el resultado y, por lo tanto, qué línea se golpeará.
Como se puede imaginar por el tono de mi pregunta, se resalta la línea incorrecta, pero se devuelve el resultado correcto. Si revisas el código, baila bastante.
¿Hay algo que se pueda configurar de manera diferente para que se muestren las líneas correctas? (Estoy usando el último Android Studio, que aprecio que es potencialmente inestable, pero estoy seguro de que he visto un comportamiento similar en Eclipse hace un tiempo, pero nunca pasé el tiempo buscándolo, tal vez es algo de Java) .
Esto es lo que funcionó para mí, al menos para acceder al código fuente de Android SDK:
- Instale la plataforma SDK y las fuentes para Android SDK exactamente para el nivel API de la versión de Android que está ejecutando durante el desarrollo (use la página del historial de versiones de Android para averiguar qué nivel API tiene su dispositivo).
- Compila tu aplicación exactamente para esa versión. Por ejemplo, en Android Studio, abra el archivo
build.gradle
su aplicación y establezca el valor decompileSdkVersion
consecuencia. - Depure su aplicación. Cuando ingrese a la fuente de Android SDK, debería ver la línea correcta.
- (opcional) Vuelva a compilar con el último SDK antes de implementarlo. En otras palabras, cambie
compileSdkVersion
nuevo.
Pruebe Build -> Rebuild project y luego Shift + F9. Tiene un código obsoleto ejecutándose en la aplicación.