cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Maffett, Ian" <ian.maff...@intel.com>
Subject Cordova 5 - Android and 3rd party libraries question
Date Mon, 18 May 2015 13:18:16 GMT
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-unsubscribe@cordova.apache.org
For additional commands, e-mail: dev-help@cordova.apache.org


Mime
View raw message