Aprenda Android cómo depurar el código fuente de una aplicación Android
Entorno de desarrollo y depuración: Ubuntu 14.10, openJdk 1.7, Android Studio 1.0.2, código fuente android-5.0.1_r1
Debido a que AS se desarrolla en base a IntelliJ IDEA, este artículo también Aplicable a IntelliJ IDEA
I. Modificar la configuración de memoria de Android Studio (en adelante, AS)
Dado que se consumirá una gran cantidad de memoria al importar el código fuente, debe Primero modifique los valores IDEA_HOME/bin/studio64 -Xms y -Xmx en .vmoptions (las máquinas x86 modifican studio.vmoptions). El documento utiliza 748 my puede modificarse. En segundo lugar, configure el JDK y el SDK para AS
. Agregue un JDK sin classpath en el IDE. Esto garantizará que pueda usar los archivos de la biblioteca en el código fuente
y agregarlos. El SDK de Java como SDK a utilizar. Como se muestra a continuación
3. Genere el archivo de configuración (*.ipr) necesario para importar AS
① Compile el código fuente (asegúrese de generar un archivo .java, como R .java; si ya está compilado, no es necesario volver a compilar)
② Compruebe si idegen.jar existe en el directorio /host/linux-x86/framework/
Si idegen .jar no existe, ejecute: p>
mmm development/tools/idegen/
En 5.0.1 el código fuente generará la carpeta res.java, lo que hará que idegen.jar se lance FileNotFoundException en tiempo de ejecución, y esto se debe a una falta de rigor en el código idegen.
Hay un parche para corregir este error al compartir. También puedes usar directamente el idegen.jar que compartí.
③Ejecutar
development/tools/idegen/idegen.sh
Espere resultados similares al siguiente:
Exclusión de lectura: 5 ms
Árbol recorrido: 44078ms
Esto generará los archivos de configuración android.ipr y android.iml IntelliJ IDEA (AS basado en IntelliJ IDEA Community Edition) en el directorio raíz del código fuente.
Consejos:
AS importa el código lentamente. Se recomienda modificar android.iml para excluir el código no utilizado. Puede imitar la sintaxis para filtrar carpetas .repo, por ejemplo:
Esto omitirá las carpetas abi y art al importar. Cuanto más filtre, más rápido lo procesará AS.
④ Abra el código fuente en el directorio raíz de Android recién generado en AS.
ipr
Si aparece AS durante la importación
Se recomienda seguir la solución proporcionada (url:/display/IDEADEV/Inotify+Watches+Limit). El contenido específico es el siguiente:
4. Resuelva el problema de error de salto en el código fuente
①Establezca el SDK y JDK correctos para el proyecto actual
②Establezca la dependencia de "Módulos"
p>Primero, elimine todas las dependencias excepto las dos indicadas por "1" en la imagen de arriba (Nota: elimínelas todas aquí solo por conveniencia. Si está utilizando .jar, simplemente agregue sus rutas. Eso es todo. p>
Por ejemplo, 5.0.1 ContactsCommon usa geocoder-2.9.jar y libphonenumber-6.2.jar)
Haga clic en el "2" que apunta al "+" en la imagen de arriba y luego Seleccione "3" apuntando a la opción "Jars o directorios" y agregue marcos y luego carpetas externas. Por ejemplo:
Es posible que se muestren otras versiones del código:
No importa, esto es solo un problema de visualización; al hacer clic en Aceptar se agregará la ruta del marco.
Si aún recibe el error de salto de código, siga los pasos anteriores para agregar la ruta del código correspondiente o el archivo jar en su pestaña de dependencias.
Código fuente V.DEBUG
Podemos agregar "Android Framework" al "Módulo" del proyecto que acabamos de importar para que AS lo trate como un proyecto de Android, haciéndolo Es más fácil para nosotros depurar el código.
Puedes agregar compatibilidad con Android Framework siguiendo "1" y "2" en la figura anterior.
Agregue un punto de interrupción en el código y seleccione "Ejecutar'->'Adjuntar?depurador?a?Android?proceso " o haga clic en el icono que se muestra a continuación
En la ventana emergente Cuadro de diálogo "Elegir proceso", seleccione "Mostrar todos los procesos", seleccione el proceso de código de depuración y luego haga clic en "Aceptar".
6. Otros
Hay muchos lugares en el código que solicitan ¿Llamada?requiere?API?Nivel?x.... . Este problema ocurre porque AS trata nuestro proyecto como un proyecto de aplicación de Android y minSdkVersion no está especificado en el código fuente.
Solo necesitamos agregar la declaración minSdkVersion en el directorio raíz del código fuente del archivo AndroidManifest.xml (compartir un AndroidManifest.xml).
También puedes considerar usar build.gradle para resolver el problema.