jueves, 8 de septiembre de 2016

Crear Plugins para Android Studio

Existen funcionalidades que Android Studio no cumple, para ello existen los plugins, estos cubren los vacíos y atienden requerimientos específicos.

En este tutorial desarrollaremos un Plugin que permita añadir dependencias de forma automática a nuestros proyectos. Le llamaremos Snorlax (Obvia alusión a la pereza que da añadir requerimientos de forma manual).

Android Studio no es más que IntelliJ IDEA con el plugin para Android más otras configuraciones y modificaciones. Por lo que desarrollar un plugin para Android Studio es, en esencia, casi igual que hacerlo para IntelliJ IDEA.



android studio architecture intellij plugin


Parte 1: Preparando el ambiente
Ambiente

Para poder compilar en el ambiente de google debe usar Linux o Mac OS o Windows. Google recomienda usar la última versión LTS de Ubuntu para trabajar en su ambiente.
Debes tener la última versión de Android Studio instalada.

Debe instalar el JDK (Recomiendo usar el de Oracle). La gente de Jetbrains y Google recomiendan usar el JDK 1.6, pero en este tutorial usaré el 1.8 rev 93 puesto no me ha presentado ningún problema hasta el momento. El SO que usaré es Fedora 23 x86_64 con kernel 4.4.6-300.


Descargando e instalando IDEA Community

Android Studio no ofrece la utilidad de crear plugins para el. Por ello debemos usar IntelliJ IDEA  para crear el plugin. Para este efecto debemos usar la versión Community que es gratuita. Incluso si tiene la versión Ultimate debe descargar e instalar la versión Community. Esto porque la versión Ultimate es de código cerrado y para crear el Plugin necesitaremos leer mucho código fuente del IDE cuando hagamos debug.

Puede descargarla desde aqui: https://www.jetbrains.com/idea/#chooseYourEdition

Yo la he descomprimido en /opt
Luego debes entrar en el directorio bin y ejecutar idea.sh como usuario regular



Descargando los sources de Android Studio


Google creó una herramienta llamada "repo" para facilitar el trabajo con Git en el contexto de Android. Para instalarla debes ejecutar lo siguiente:

# curl https://storage.googleapis.com/git-repo-downloads/repo > /bin/repo
# chmod a+x /bin/repo

Una vez instalada la herramienta repo podemos bajar los sources de Android Studio ejecutando desde la terminal lo siguiente :

$ mkdir studio-master-dev
$ cd studio-master-dev
$ repo init -u https://android.googlesource.com/platform/manifest -b studio-master-dev
$ repo sync

El código anterior bajará la main branch del repositorio de Android Studio (en mi caso la 1.4 rev 3 al 07-09-16).


En total pesa 9.4 GB por lo que este proceso demorará bastante incluso si vives en Seul :)



Parte 2: Creando el proyecto del plugin

Abrimos IDEA y creamos un nuevo proyecto


Va a seleccionar IntelliJ Platmorm Plugin y luego dará click en Next.
Inmediamente saldrá un diálogo indicando lo siguiente:

"Do you want to create a project with no SDK assigned?
An SDK is required for compiling, debugging and running applications,
as well as for the standard SDK classes resolution."

Debe dar click a "Yes"


Luego coloca el nombre al nuevo proyecto y luego en Finish



Cuando el proyecto termine de cargar entra en File -> Project Structure

Luego debes configurar el JDK:


Cuando cargue selecciona el Project language level en 6



Luego debe ir a Platform Settings -> SDKs y darle click al botón y seleccionar "IntelliJ Platform Plugin SDK". 



Luego debe crear el "Platform Plugin SDK". Debe hacer referencia al directorio de instalación de Android Studio (En mi caso está instalado en /opt/android-studio2/android-studio



Va a preguntar que JDK va a usar. Debe seleccionar la versión 1.8


El JDK va a quedar algo así:


Luego entre en la pestaña Sourcepath -> + para agregar el path donde descomprimió los sources de Android Studio. 


Saldrá este diálogo y debes darle click en "OK"


Quedaría algo así:

Presione OK e indicará lo siguiente: (debe darle click a Attach Annotations)




NOTA: ¿Puedo usar las fuentes de IDEA en vez las de Android Studio?

Si, si puedes. Pero solo aplica cuando no quieras hacer algo realmente avanzado que use el plugin de Android Support (como SQLScout). Los sources de Android Studio pesan 9.4 GB y son 160 mil ficheros, por lo que a veces por razones de arranque del proyecto o velocidad de internet imposibilita utilizarlos.
Si tu plugin solo modificará ficheros, crear directorios u otra cosa como esta, basta con los sources de IDEA. En esta entrada explico como descargarlos: 


Parte 3: Creando un Plugin de prueba

En esta parte hacemos que el plugin abra un diálogo cuando se de click en Tools -> Snorlax


Crea un nuevo paquete y llamalo "snorlax". Dentro de el irán nuestras clases



Saldrá un dialogo para crear el nuevo action.
Debes llenar los campos de la siguiente forma:
  • Action ID: Es el identificador único del action. Se recomienda colocar el nombre de sus paquetes contenedores concatenado al nombre de la clase.
  • Class Name: Nombre de la clase del nuevo action
  • Name: Nombre que mostrará en la UI
  • Description: Texto de ayuda que se mostrará en un tooltip o en la statusbar cuando se seleccione la UI del action.
En la siguiente imagen se visualiza mejor cada uno de los campos




La acción anterior crea nuestro action




El fichero plugin.xml

En el fichero plugin.xml ubicado en el directorio META-INF podremos editar la configuración de nuestro plugin

En la sección <actions> podremos añadir nuevos actions. Por ejemplo para añadir una nueva entrada al MenuBar podemos escribir lo siguiente

<group id="com.instant.snorlax.Menu.SnorlaxMenu" text="Snorlax" description="Snorlax actions">  <add-to-group group-id="MainMenu" anchor="last"  />
  <action id="com.instant.snorlax.depmanager.view.actions.LibrariesManagerAction"          class="com.instant.snorlax.depmanager.view.actions.LibrariesManagerAction" text="Project Libraries manager"          description="Add libraries to your project using a GUI">    <add-to-group group-id="ToolsMenu" anchor="first"/>    <keyboard-shortcut keymap="$default" first-keystroke="altGraph L"/>  </action>
</group>

y el resultado será el siguiente:


Parte 4: Corriendo nuestro proyecto

Para correr nuestro proyecto presionamos mayus + F10. Debe abrir una instancia de Android Studio con nuestro plugin instalado.




Lo que sigue es que continues leyendo la documentación oficial de JetBrains


otros links de interés:



No hay comentarios:

Publicar un comentario