Cordova plugin development - adding aar Cordova plugin development - adding aar android android

Cordova plugin development - adding aar


Here's what I've done to use a gradle reference with a Cordova plugin, I think this might help you.

Global structure :

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

Put your library, say foo.aar, in the yourDirContainingYourAAR directory (create it if needed)

  • In the plugin.xml file :

    <platform name="android">    <!-- your configuration elements, references, source files, etc... -->    <framework src="src/android/yourFile.gradle" custom="true" type="gradleReference" />    <resource-file src="yourDirContainingYourAAR/foo.aar" target="libs/foo.aar" /></platform>
  • In the gradle file yourFile.gradle :

    repositories{      jcenter()  flatDir {      dirs 'libs'   }}dependencies {   compile(name:'foo', ext:'aar')}android {  packagingOptions {    exclude 'META-INF/NOTICE'    exclude 'META-INF/LICENSE'  }}
  • In the root folder of your plugin (same level as plugin.xml ) create a build-extras.gradle.If needed, add or remove minSdkVersion and targetSdkVersion according to your project needs :

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


There has to be a slight modification to Niko's answer

When gradle runs the compilation using Niko's answer, it searches for the libs in app/libs which is not present in the project (it does in the standard Android Studio project, but in Cordova Android project structure the libs folder is different). However the plugin copies the aar library to app/src/main/libs which can make us think it is copying the aar to app/libs

<resource-file src="yourDirContainingYourAAR/foo.aar" target="libs/foo.aar" />

Hence the gradle file should be

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

This will give you a successful compilation of the app

Cheers!!


After cordova project creation, adding platform, adding plugin is done.

Lets say the aar file are copied in libs folder. ( assume file name is cards.aar )

then in app build.gradle specify following and click sync project with Gradle files.

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

It works for me!! but one drawback of this solution is .. you need to open the project from platform folder on Android Studio and add the above lines to your build.gradle