I’ve run into a few issues with Cordova CLI5, Android 4 and libraries/frameworks. I will try to explain below, but the issue appears to be related to the dependency section in build.gradle and each librarie’s build.gradle file.
We’ve developed a plugin to enable expansion files on Android. It is dependent on three custom Android libraries, which declare in the plugin.xml file. <framework src="AndroidLibrary/GoogleExtras/play_licensing/library" custom="true" /> <framework src="AndroidLibrary/GoogleExtras/play_apk_expansion/downloader_library" custom="true"/> <framework src="AndroidLibrary/GoogleExtras/play_apk_expansion/zip_file" custom="true" />’ The first problem we ran into we will be submitting a patch to fix. The issue is that the project’s folder name was prepended to the path when it was created. We could not reference this in the build-extras.gradle due to the constant name change. Below is an example where my project’s directory from cordova create is “foobar" org.apache.cordova.xapkreader/foobar-library I spoke with Andrew Grieve via email and he recommend changing the build.js file in cordova-android to enable the following in creating the settings.gradle . We can now properly reference the library in a build-extras.gradle include ":org.apache.cordova.xapkreader:library" project(":org.apache.cordova.xapkreader:library").projectDir = new File("org.apache.cordova.xapkreader/foobar-library”) The second issue we are running into is bigger. Whenever we run a build, we get DEX errors. There are two specific cases we are running into. The first is for general Cordova errors, the second is specific to our AndroidLibrary/GoogleExtras/play_licensing/library . com.android.dex.DexException: Multiple dex files define I believe this is due to the following 1. The main build.gradle has dependencies to all the sub projects/libraries which get built 2. The libraries each have their own build.gradle which has a dependency on CordovaLib In the general case, it appears that with each library CordovaLib is being compiled into the jar and causes the error for DEX since it includes multiple definitions. If I open up Android studio and change each libraries build.gradle dependency to only have the following (the reference to CordovaLib was removed) dependencies { compile fileTree(dir: 'libs', include: '*.jar') } This removes the DEX errors for Cordova. The issue specific to our plugin is that I have to modify the main build.gradle dependency to remove the references for the following, which is a custom library we’ve declared. debugCompile project(path: ":org.apache.cordova.xapkreader:library", configuration: "debug") releaseCompile project(path: ":org.apache.cordova.xapkreader:library", configuration: "release") Removing those references allows the AndroidLibrary/GoogleExtras/play_apk_expansion/downloader_library build-extras.gradle file to reference it and build successfully. dependencies { compile(project(':org.apache.cordova.xapkreader:library')) compile fileTree(dir: 'libs', include: '*.jar') } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org For additional commands, e-mail: dev-h...@cordova.apache.org