Cómo implementar una aplicación de depuración de modo adicional en Android Studio
Entonces, de nuevo, el aar se genera en el proyecto SDK, se copia en el proyecto de demostración y se compila en el apk final.
Depurar la capa Java es muy sencillo. Puede adjuntar la aplicación al proyecto SDK en Android Studio en tiempo de ejecución; si la adjunta directamente a la demostración, parte del código fuente en el SDK no será visible y solo podrá verlo a través del archivo jar en el directorio del proyecto.
La capa adicional no es factible de forma predeterminada, porque la depuración de la capa jni comienza a depurar. Echemos un vistazo al proceso de Android Studio que maneja varios comportamientos de depuración:
Depuración de la capa Java: <. /p>
adb push 1.apk /data/local/tmp/1.apk
am start -D -n com.example.test/.MainActivity
android studio espera a que el estado de la aplicación sea normal
Establecer puntos de interrupción
Realizar conexión remota y utilizar un protocolo de depuración de Java adicional
Depuración de capa JNI:
adb push 1.apk /data/local/tmp/1.apk
am start -D -n com.example.test/.MainActivity
android studio espera la aplicación el estado es normal
adb push lldb_server
./lldb_server............Configurar el servidor de depuración de lldb
lldbfrontend .exe ......................Conectarse al servidor de depuración lldb
Enviar comandos de depuración adicionales a lldb_server
Establecer java/ puntos de interrupción de la capa c
Realizar conexión remota, usar protocolo de depuración de Java adicional
Depuración adicional:
Establecer puntos de interrupción
Realizar conexión remota, usar protocolo de depuración adicional de Java
1. Durante el proceso de investigación, se encontró que dos so estaban compilados en la capa jni. El so firmado estaba en el directorio obj/local y el so estaba compilado en el apk. no se pudo firmar En este momento, use gdb para depurar. El archivo bar está configurado para firmar y se puede depurar. Al continuar con la investigación, descubrimos que los bytes anteriores de firmado y sin firmar son exactamente iguales.
2. Cuando Android Studio crea un proyecto jni, necesita instalar lldb automáticamente, modificar el script gradle, build.gradle
depurar {
jniDebuggable true.
}
3. El botón adjuntar de Android Studio solo usa configuración remota en Configuración de ejecución/depuración
Del proceso anterior, se puede ver que adjuntar no activa los pasos de depuración de la capa jni, y después de escribir el paso de depuración de la capa jni, la parte que cargó previamente el apk debe eliminarse, por lo que es necesario modificar android-ndk.jar
El efecto fue finalmente logrado.
Algunas clases importantes:
IDevice: describe el dispositivo móvil
Cliente: describe el proceso del paquete de aplicaciones
AndroidNativeDebugProcess controla la depuración jni y la comunicación lldb_server
AndroidNativeDeubgRunner controla la parte del depurador
AndroidNativeRunConfiguration configura la opción Natvie-Debug en la configuración de ejecución/depuración, y agregué la lista de procesos de la aplicación del usuario para facilitar la depuración
Control de la interfaz de configuración de AndroidNativeRunConfigurationEditor
Capa jni AndroidLLDBDebuggerContext, utilizada para construir el depurador lldb
Implementación de funciones básicas de depuración de AndroidLLDBDriver