cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Grieve <agri...@chromium.org>
Subject Re: Cordova 5 - Android and 3rd party libraries question
Date Tue, 26 May 2015 16:03:28 GMT
Finally got around to looking at this.

Cloned & was able to reproduce the error.

Changing the build-extras.gradle to:

dependencies {
    debugCompile project(path: ':org.apache.cordova.xapkreader:library',
configuration: "debug")
    releaseCompile project(path: ':org.apache.cordova.xapkreader:library',
configuration: "release")
}

Fixed it for me. Probably gradle's not de-duping correctly when mixing
compile("foo"), and debugCompile("foo")

On Thu, May 21, 2015 at 9:19 AM, Maffett, Ian <ian.maffett@intel.com> wrote:

> Thanks for the info Andrew.  I did confirm I was able to build with your
> plugin fine.  It looks like that was a red herring on my end.
>
> I¹ve pushed up a github repo showing the DEX issue.  You should be able to
> clone it and
> run cordova commands.  This does have the fix to generate the proper
> settings.gradle file.
>
> https://github.com/imaffett/gradle-dex-issue
>
>
> One thing to note -
> https://github.com/imaffett/gradle-dex-issue/blob/master/platforms/android/
> org.apache.cordova.xapkreader/foobar-downloader_library/build-extras.gradle
>
> If I do not have compile in there, then I get reference errors trying to
> build.  I think
> this is causing the DEX issue since the main build.gradle is building
> project(':org.apache.cordova.xapkreader:library¹)
>
>
> Thanks,
> Ian
>
> On 5/19/15, 8:05 PM, "Andrew Grieve" <agrieve@chromium.org> wrote:
>
> >Hmm, I've written a couple of other plugins that don't suffer from
> >multiple
> >dex exceptions. I forget the first, but the second is:
> >
> >https://github.com/MobileChromeApps/cordova-plugin-background-app
> >
> >So, I think there might be something else going on besides the plugin's
> >lib
> >having a dependency on CordovaLib (this is what allows plugin library
> >projects to reference Cordova APIs)
> >
> >On Mon, May 18, 2015 at 9:18 AM, Maffett, Ian <ian.maffett@intel.com>
> >wrote:
> >
> >> 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
> >>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@cordova.apache.org
> For additional commands, e-mail: dev-help@cordova.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message