Part 1: Create Android Studio plugin to toggle «Show layout bounds»

hmm… Tengo algo que me lleva unos cinco
segundos y lo hago un par de veces a la semana . Sé lo que debo hacer. ¡Debería pasar
tres horas tratando de automatizarlo! Hola chicos bienvenidos en otro video.
Este video formará parte de la serie en la que le mostraré cómo crear
un complemento de estudio de Android muy simple que alterna la opción de mostrar bandas de diseño. La opción de las opciones de desarrollador
que probablemente todos conocéis y usáis. Quería hacer este complemento durante bastante
tiempo porque realmente es algo que uso mucho y realmente me molesta que
tengo que buscarlo en la configuración cada vez.

Entonces me di cuenta de que es una gran
oportunidad para aprender a hacer el complemento de Android Studio y mostrárselo.
Y para mostrarte que en realidad no es tan difícil. En la primera parte de la serie, aprenderá
cómo crear un complemento de Android Studio muy simple que muestre una notificación y cómo
obtener una lista de dispositivos conectados desde adb. En el segundo video, aprenderá cómo mostrar y
ocultar los límites del diseño usando el script de shell adb y cómo  ejecutar el script desde el complemento de Android Studio.
Entonces, sin más preámbulos, ¡comencemos a codificar! Bien, lo primero que necesitamos es
descargar Intellij IDE.

Y lo realmente importante aquí es que la versión de su Intellij
debe tener la misma versión de la plataforma intellij que se usa en Android Studio. Podemos encontrar la
versión de la plataforma Intellij utilizada para compilar Android Studio en la pantalla de diálogo Acerca de.
Y como puede ver, se muestra aquí y, en mi caso, comienza con 201.
Entonces, en la página de descarga de Intellij, no descargo la última versión del IDE, sino que voy a la
página de versiones y busco una compilación que comience con 201.

Y aquí es exactamente el mismo número que
se usó para compilar mi versión de Android Studio, pero si la versión que encontró comienza con
el mismo prefijo pero no coincide perfectamente, puede usar este menú desplegable para buscar una
versión de corrección específica para que coincida con la compilación. versiones perfectamente. De acuerdo, tengo Intellij instalado y,
como puede ver en el cuadro de diálogo Acerca de, mi versión de compilación coincide exactamente con la
versión de compilación que vimos en Android Studio. Así que ahora podemos crear un nuevo
proyecto. En el asistente, seleccionamos   la opción de complemento de la plataforma Intellij y kotlin
JVM porque obviamente queremos usar kotlin.

A continuación, haga clic en Siguiente y, en la pantalla siguiente,
especifique el nombre y la ubicación de un proyecto. Después de hacer clic en finalizar, se crea un nuevo proyecto. Y como puede ver, contiene el
archivo build.gradle y el archivo plugin.xml. En este archivo especificaremos toda la información
sobre nuestro complemento y registraremos acciones. De acuerdo, primero nos centraremos en el
archivo build.gradle.

Lo primero que debemos hacer es especificar que nuestro complemento es el complemento de Android Studio
y usa la API del complemento de Android. Y para hacerlo, configuramos el atributo del
complemento intellij en android. Lo segundo que debemos hacer es especificar
el directorio donde se encuentra Android Studio y lo hacemos usando el atributo runIde ideDirectory.
Y dado que no publicaré este complemento fuera de mi máquina local, solo codificaré la ruta
a mi estudio de Android solo por simplicidad. Después de todo esto, podemos sincronizar nuestro gradle y pasar al siguiente paso,
que es crear una nueva acción. Para crear una acción, debemos crear una nueva
clase de kotlin y llamaremos a esta clase showLayoutBounds. En esta clase especificaremos toda la lógica que
se activará una vez que se active nuestra acción. Y para hacer de nuestra clase una acción, tenemos que heredar
de una clase AnAction.

La función que necesitamos implementar es actionPerformed y aquí
lanzaremos nuestra notificación. Y como puede ver, esta función tiene un parámetro. Lo ignoraré
por ahora, pero lo usaremos más adelante en segundo lugar. Como puede ver, creé la
función showNotification que toma nuestro mensaje como parámetro y definí esta función justo debajo. En esta función, uso la clase NotificationGroup para,
bueno, como era de esperar, crear un grupo de notificaciones. Esta función toma como parámetro
displayId y notificación displayType. Y este tipo especifica si nuestra notificación
se cerrará sola o tal vez el usuario tiene que interactuar con ella para cerrarla.
A continuación, usaremos la función createNotification para   crear una notificación y
pasar el título y el mensaje de nuestra notificación y el tipo de notificación.
Utilizo el tipo de notificación de advertencia que me da el pequeño icono de advertencia
junto a la notificación. Y como no lo necesitamos,
también especifiqué listener en nulo.

Y lo último para iniciar la notificación
. Necesito llamar a notificar y esta función necesita que se le pase el proyecto, así que también tengo que
pasarlo a la función showNotification . Elegí hacer de showNotification una
función de extensión y pasé el proyecto como receptor, pero si lo prefiere, también puede pasar el proyecto
como un parámetro de función, está completamente bien. Ahora podemos registrar la acción y
especificar qué la activará. Podemos hacerlo manualmente en el archivo plugins.xml,
pero también podemos usar el asistente en Intellij. Entonces, para hacerlo, haremos clic en la opción Registrar acción
y aquí especificaremos el nombre y la descripción de la identificación de la acción. A continuación, en una lista, podemos seleccionar
dónde mostrar nuestra acción. Como puede ver, la lista es bastante larga y
podemos, por ejemplo, seleccionar mostrar nuestra acción en el menú principal, como hice aquí.
En la parte inferior también podemos opcionalmente especificar un método abreviado de teclado para esta
acción y una vez que hayamos terminado, podemos hacer clic en Aceptar.

Y ahora, como puede ver, la acción
se agregó al archivo plugin.xml y aquí hay una identificación, clase, título
y descripción que escribimos. Por supuesto, podemos cambiar las opciones previamente seleccionadas
. Decidí que quiero que mi acción se muestre en el menú de herramientas en lugar del menú principal
y en la parte inferior de la lista. También eliminé las extensiones ya que no las
necesitamos y modifiqué la descripción, el nombre y otra información sobre el complemento que será visible
una vez que instalemos el complemento en Android Studio. Entonces, ahora que todo lo demás está hecho
, finalmente podemos construir nuestro complemento para crear un archivo .jar que se usará
para instalar el complemento en el estudio de Android. Puede tomar un par de segundos y una vez que se crea el
complemento, podemos pasar a Android Studio.

Y aquí en preferencias vamos a la sección de complementos
y seleccionamos la opción instalar complemento desde disco. El jar que construimos estará en el
directorio build.libs en nuestro proyecto. Una vez que instalamos el complemento, es posible que Android
Studio le notifique que debe reiniciarse para aplicar los cambios en un complemento.
Como puedes ver esta vez no fue necesario.

Y después de instalar el complemento en la
sección de herramientas, hay una nueva opción: mostrar los límites del diseño. Y después de hacer clic en
él, muestra una notificación que escribimos. Por supuesto, también puedo activar esta acción
mediante el método abreviado de teclado que especificamos anteriormente o buscar el nombre de una acción. Bien, volvamos a Intellij. Tenemos un
complemento básico que muestra una notificación, ahora agreguemos otro elemento. Para habilitar la opción de límites de diseño
, lo primero que tendremos que hacer es obtener una lista de
dispositivos conectados con los que queremos interactuar. Y debido a que queremos interactuar con el
puente de depuración de Android, que es parte de la API del complemento de Android, debemos especificar la
dependencia de Android de Jetbrains en el archivo plugins.xml. Después de eso, podemos volver
a la clase showLayoutBounds para obtener los dispositivos conectados y mostrar cuántos
dispositivos están conectados ahora. Para hacerlo, usaremos   la clase AndroidSdkUtils, luego llamaremos a la
función getDebugBridge  que toma el proyecto como parámetro.

Desde adb podemos obtener una lista de todos los dispositivos conectados y, dado que se pueden conocer algunos rellenos,
moveremos las cosas para que el código se compile. Bien, ahora la lógica muy fácil
solo verificaremos si la lista de dispositivos es nula o está vacía. Si es así, mostraremos la notificación
sin ningún mensaje de dispositivos conectados y si algunos dispositivos están conectados, mostraremos cuántos
dispositivos están conectados mediante la notificación. Y una vez que todo esté hecho,
podemos compilar nuestro complemento una vez más y luego, después de que nuestro proyecto se compile
, podemos ir a Android Studio, instalar el complemento desde el disco una vez más, seleccionar un nuevo
.jar y ahora, como puede ver, tengo que reiniciar IDE para aplicar cambios en el complemento. Una vez que Android Studio se
reinicia, puedo probar el complemento que creamos. Y como puede ver, tengo un
dispositivo conectado en este momento y cuando hago clic en mostrar la acción de rebote del diseño, la
notificación aparece con el texto apropiado y una vez que salgo de un emulador, el
mensaje de notificación cambia.

De acuerdo, cubrimos todos los aspectos básicos,
aprendiste cómo obtener una lista de dispositivos conectados y cómo mostrar una notificación.
En el próximo video terminaremos nuestro plugin. Le mostraré cómo ejecutar el comando adb shell
desde el complemento de Android Studio para finalmente mostrar, ocultar y alternar la
opción de límites de diseño de nuestro complemento. Estén atentos, nos vemos en el próximo
video que estará disponible muy pronto.