Dos formas de ver AOSP en AndroidStudio

Autor: Geralt de Rivia

Este artículo comparte principalmente algunos métodos de uso de AndroidStudio para ver aosp en mi trabajo habitual. Al mismo tiempo, espero que los grandes que conocen otros métodos convenientes y efectivos de visualización y depuración puedan darme consejos, compartir entre ellos y hacer progresar juntos.

Si abre directamente el directorio raíz de aosp con AndroidStudio, luego abre cualquier clase de Java, el valor predeterminado puede ser así:

La página de pestañas del archivo Java muestra el icono como

, que significa "clase Java ubicada fuera de la raíz de origen", y sus variables de miembro internas y similares no se resaltan en la sintaxis.

Luego de nuestra configuración, el archivo Java reconocido se muestra en la siguiente figura:

La página de pestañas del archivo Java muestra el icono como
, y las variables miembro también están resaltadas.

Más importante aún, en este momento, el código ya ha establecido un índice, como la finalización del código (el código aquí no solo completa los campos definidos en la clase actual, sino que también completa los campos de la clase principal y otras clases):

O verifique qué clases llaman a un dominio:

Y una serie de funciones convenientes como el salto de código.

1 método principal

1.1 Pasos de configuración

El primer método debería ser conocido por muchas personas. He usado este método durante mucho tiempo desde que entré en contacto con Android. Este método requiere un AOSP compilado.

1), primero asegúrese de que se haya ejecutado:

soruce build/envsetup.sh

Espere a que el comando cargue las variables de entorno necesarias para la compilación.

2), luego ejecute:

mmm development/tools/idegen/ -j16

Después de una compilación exitosa, generará:

Antes de compilar aquí, configuré la variable de entorno del directorio generado en out_sys, por lo que el archivo generado está en out_sys.

3) En este momento, puede ejecutar el comando:

./development/tools/idegen/idegen.sh

Si su directorio generado también está en out_sys como el mío, es posible que deba crear un nuevo directorio out/host/linux-x86/framework/ y luego copiar idegen.sh en él:

cp out_sys/host/linux-x86/framework/idegen.jar out/host/linux-x86/framework/

Al ver una salida similar a:

Todo estará bien, y finalmente se generarán dos archivos en el directorio raíz de aosp, android.ipr, android.iml:

4) Abra este android.ipr a través de Android. Dado que es la primera vez que abre el código fuente, todos los módulos se indexarán, por lo que lleva mucho tiempo y la tarjeta AndroidStudio no se puede usar durante mucho tiempo. Esta es la razón principal por la que dejé de usar este método. para ver aosp. Para ser honesto, personalmente no he usado este método durante mucho tiempo. Esta vez probé este método nuevamente para escribir este artículo. A veces, ni siquiera se puede saber si el índice realmente se está construyendo o simplemente está atascado.

1.2 Ventajas y desventajas

Debido a que el tiempo de la tarjeta es demasiado largo y no quiero esperar, no se demostrarán los siguientes pasos. De hecho, no hay contenido. Permítanme hablar sobre las posibles habilidades útiles bajo este método de visualización:

  • Establezca el directorio de código que no usa en excluido.Esta operación parece ser de poca utilidad de esta manera.
  • En android.iml, cambie el directorio de código que no usa de sourceFolder a excludeFolder. Este método es muy útil. Puede ayudarlo a filtrar muchos archivos irrelevantes, ya sea al indexar o al ver el código AOSP más adelante.
  • Elimine todos los paquetes jar en Estructura del proyecto -> Módulos -> Dependencias para evitar saltar a otros lugares desordenados cuando salta el código.

Esta forma de ver aosp tiene la ventaja de indexar todos los módulos a la vez, pero también tiene una desventaja: la primera carga es extremadamente lenta debido a la necesidad de indexar, y la reapertura posterior es mucho más rápida que la primera vez, pero también es relativo Personalmente, creo que lleva mucho tiempo.

Además, el método de modificación de android.iml mencionado anteriormente es un buen método, pero no está exento de desventajas. Por ejemplo, puede ser problemático configurarlo. Aunque esta operación de configuración es de una vez por todas, si cambia el código de otro proyecto, luego debe reconfigurar el android.iml de este proyecto y debe pasar por un largo proceso de indexación. Lo que hice en ese momento fue reutilizar android.ipr y android.iml. Por ejemplo, configuré estos dos archivos en el proyecto A. Luego, cuando descargué un conjunto de código para el proyecto B, pude copiar directamente el proyecto. .ipr y android.iml de A al proyecto B para reutilizar estos dos archivos. La ventaja es que ahorra mucho tiempo y energía. La desventaja es que si los nombres o directorios de los archivos que desea ver en los dos proyectos son diferentes (por ejemplo, la plataforma Android se ha actualizado), puede ser problemático y puede haber algún problema desconocido que nunca se ha encontrado.

Todas estas cosas me dan ganas de encontrar otra forma de ver aosp.

2 manera fácil

2.1 Pasos de configuración

Me he quejado mucho de las deficiencias del primer método, pero hay otro punto que no se puede ignorar, es decir, necesitas un conjunto de aosp compilados, en muchos casos, solo puedo extraer el código de una determinada biblioteca en aosp. , como marcos/biblioteca base, ¿entonces no puedo crear un índice interno para verlo?

La respuesta ahora es sí, y en realidad es bastante simple. Pero aquí todavía hay un ejemplo de todo el conjunto de aosp, la operación es la misma:

1) Por ejemplo, descargué un conjunto de códigos de proyecto ahora y luego abrí directamente el directorio raíz del proyecto en AndroidStudio. Inicialmente, todos los directorios son así:

2) En este momento, cierre la operación de indexación en la esquina inferior derecha:

3), y luego configure todos los directorios como Excluidos:

Una vez que el directorio se establece en Excluido, se ve así:

Este paso también se puede omitir, solo espero que los módulos irrelevantes se excluyan al principio para facilitar la posterior indexación y visualización de códigos.

4), y luego vuelva a abrir AndroidStudio, en este momento encontrará que el paso de construir el índice se ha ido, porque todos los directorios han sido excluidos.

5), y luego desea ver qué códigos, marque el directorio java o el directorio src donde se encuentran estos códigos como Sources Root (este paso debe basarse en el principio de configuración de IntelliJ IDEA, pero no he encontrado contenido de soporte teórico específico ), Por ejemplo, a menudo leo contenido relacionado con WMS, en

frameworks\base\services\core\java\com\android\server\wm\

paquete, entonces puedo poner

frameworks\base\services\core\java

Este directorio está configurado como Sources Root, así:

Una vez que el directorio se establece como Sources Root, el resultado es:

En este punto, puede volver a indexar este directorio. Por ejemplo, creo un nuevo método de prueba en la clase WindowContainer.java para ver a qué métodos puede llamar:

Puede ver la función de finalización de código.

Compruebe en qué clases se llama al método miembro isDescendantOf, o:

No introduciré mucho sobre los demás, yo personalmente uso esta forma de ver aosp.

2.2 Caso especial de salto a SDK

Permítanme hablar sobre la situación que se puede encontrar aquí, es decir, el salto de código puede transferirse al SDK en lugar de aosp. Por ejemplo, quería saltar a la clase Rect a través de Ctrl + botón izquierdo del mouse, y descubrí que saltó al SDK. En lugar de Rect.java en aosp:

En este momento, debe depender del SDK en Estructura del proyecto -> Módulos -> Dependencias:

Reemplace con el paquete JDK local:

Después de la selección es así:

En este momento, intente saltar a Rect nuevamente, y estará bien:

Si no, puede deberse a que la ubicación de Rect.java es:

frameworks\base\graphics\java\android\graphics\Rect.java

Debe colocar el directorio java del directorio donde se encuentra Rect.java:

frameworks\base\graphics\java

Establecer como fuente raíz:

3 Suplementos de IntelliJ IDEA

Configurar estructura de carpetas

Categorías de carpetas

Las carpetas dentro de una raíz de contenido se pueden asignar a varias categorías.

Esta carpeta contiene código de producción que debe compilarse.

El IDE considera que los archivos en la carpeta Fuentes generadas se generan automáticamente en lugar de escribirse manualmente y se pueden regenerar.

Estas carpetas mantienen el código relacionado con las pruebas por separado del código de producción. Los resultados de compilación para fuentes y fuentes de prueba normalmente se colocan en carpetas diferentes.

El IDE considera que los archivos en esta carpeta se generan automáticamente en lugar de escribirse manualmente y se pueden regenerar.

(Solo Java) Archivos de recursos utilizados en su aplicación: imágenes, XML de configuración y archivos de propiedades, etc. Durante el proceso de compilación, los archivos de recursos se copian en la carpeta de salida de forma predeterminada. Puede cambiar la ruta de salida de los archivos de recursos en su proyecto.

De manera similar a las fuentes, puede especificar que se generan sus recursos. También puede especificar en qué carpeta dentro de la carpeta de salida deben copiarse sus recursos.

Estas carpetas son para archivos de recursos asociados con sus fuentes de prueba.

Los archivos en las carpetas excluidas se ignoran al completar el código, navegar e inspeccionar. Por eso, cuando excluyes una carpeta que no necesitas en este momento, puedes aumentar el rendimiento del IDE. Normalmente, las carpetas de salida de la compilación se marcan como excluidas.

Además de excluir carpetas completas, también puede excluir archivos específicos

Configurar categorías de carpetas

Notas de estudio de Android

Optimización del rendimiento de Android: https://qr18.cn/FVlo89
Vehículo de Android: https://qr18.cn/F05ZCM
Notas de estudio de seguridad inversa de https://qr18.cn/CQ5TcL
Android: Principios del marco de trabajo de Android: https://qr18.cn/AQpN4J
Audio y video de Android: https://qr18.cn/Ei3VPD
Jetpack (incluido Compose): https://qr18.cn/A0gajp
Kotlin: https://qr18.cn/CdjtAF
Gradle: https://qr18.cn/DzrmMB
OkHttp Notas de análisis de código fuente: https://qr18.cn/Cw0pBD
Flutter: https://qr18.cn/DIvKma
Android Eight Knowledge Body: https://qr18.cn/CyxarU
Notas principales de Android: https://qr21.cn/CaZQLo
Android Preguntas de entrevistas anteriores: https://qr18.cn/CKV8OZ
2023 Última colección de preguntas de entrevistas de Android: https://qr18.cn/CgxrRy
Ejercicios de entrevistas de trabajo de desarrollo de vehículos de Android: https://qr18.cn/FTlyCJ
Preguntas de entrevistas de audio y video:https://qr18.cn/AcV6Ap

Supongo que te gusta

Origin blog.csdn.net/weixin_61845324/article/details/132063310
Recomendado
Clasificación