Search code examples
androidcordovapluginsandroid-studioaar

Cordova plugin development - adding aar


I am new to the cordova plugin development stuff. I want to write a plugin which is able to open a new android activty and showing some advertisement.

So I followed a simple tutorial here. That works very well and as expected.

Next step is to include this Android Studio Gradle project to my plugin.

My first try: Adding the gradle project to a subfolder of my cordova plugin and adding the following line to the plugin.xml file:

<framework src="libs/Broper/build.gradle" custom="true" type="gradleReference" />

also I tried:

<framework src="libs/Broper/app/build.gradle" custom="true" type="gradleReference" />

doesn't work. So I can't import the classes of that android studio project to my plugin java files.

Then a better solution (I thought so) is to add an AAR instead. But there I don't even have a clue what to do to add that AAR in my cordova plugin.

So, the question is: How do I add an android studio project (or library) to my cordova plugin the right way?


Solution

  • 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'
         }
      }