Desarrollo de complementos de Cordova: agregando aar

Soy nuevo en el desarrollo de complementos de cordova. Quiero escribir un plugin que sea capaz de abrir una nueva actividad de Android y mostrar algún anuncio.

Así que seguí un sencillo tutorial aquí . Eso funciona muy bien y como se esperaba.

El siguiente paso es incluir este proyecto de Android Studio Gradle en mi complemento.

Mi primer bash: Agregar el proyecto gradle a una subcarpeta de mi complemento cordova y agregar la siguiente línea al archivo plugin.xml:

 

también lo intenté:

  

Los archivos de graddle son reconocidos por cordova. Pero algo no funciona. Así que no puedo importar las clases de ese proyecto de estudio de Android a mis archivos java de complemento.

Entonces una mejor solución (lo pensé) es agregar un AAR. Pero ni siquiera tengo ni idea de qué hacer para agregar ese AAR en mi complemento cordova.

Entonces, la pregunta es: ¿cómo puedo agregar un android atudio aroject (o una biblioteca) a mi plugin cordova de la manera correcta?

Esto es lo que he hecho para usar una referencia de gradle con un complemento de Cordova, creo que esto podría ayudarlo.

Estructura global:

 pluginFolder/ build-extras.gradle plugin.xml yourDirContainingYourAAR/ src/ android/ yourFile.gradle myPlugin.java 

Coloque su biblioteca, digamos foo.aar , en el directorio yourDirContainingYourAAR ( yourDirContainingYourAAR si es necesario)

  • En el archivo plugin.xml :

          
  • En el archivo yourFile.gradle :

     repositories{ jcenter() flatDir { dirs 'libs' } } dependencies { compile(name:'foo', ext:'aar') } android { packagingOptions { exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' } } 
  • En la carpeta raíz de su complemento (el mismo nivel que plugin.xml ), cree una build-extras.gradle . Si es necesario, agregue o elimine minSdkVersion y targetSdkVersion acuerdo con las necesidades de su proyecto:

     android { defaultConfig { minSdkVersion 16 targetSdkVersion 22 } packagingOptions { exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' } } 

Tiene que haber una ligera modificación en la respuesta de Niko

Cuando Gradle ejecuta la comstackción usando la respuesta de Niko , busca las libs en la app/libs que no está presente en el proyecto (lo hace en el proyecto estándar de Android Studio, pero en la estructura del proyecto de cordova Android, la carpeta libs es diferente). Sin embargo, el complemento copia la biblioteca de aar a app/src/main/libs que puede hacernos pensar que está copiando el aar a la app/libs

Por lo tanto, el archivo gradle debe ser

 repositories{ jcenter() flatDir { dirs 'src/main/libs' } } dependencies { compile(name:'foo', ext:'aar') } android { packagingOptions { exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' } } 

Esto te dará una comstackción exitosa de la aplicación

¡¡Aclamaciones!!

Después de la creación del proyecto cordova, se agrega la plataforma y se agrega el complemento.

Digamos que el archivo aar se copia en la carpeta libs. (supongamos que el nombre del archivo es cards.aar)

luego, en la aplicación build.gradle, especifique lo siguiente y haga clic en el proyecto de sincronización con los archivos de Gradle.

 repositories { flatDir { dirs 'libs' } } dependencies { compile(name:'cards', ext:'aar') } 

¡¡Esto funciona para mi!! pero una desventaja de esta solución es … debes abrir el proyecto desde la carpeta de la plataforma en Android Studio y agregar las líneas anteriores a tu build.gradle