简体   繁体   中英

In an Android Gradle build, how to exclude dependencies from an included jar file?

In my Android project, I use a library that comes as a jar. I include it in the dependencies section like so:

dependencies {
    ...

    compile files('libs/thethirdpartylibrary.jar')
    ...
}

I also want to use the okhttp library, which I include like this:

compile ('com.squareup.okhttp:okhttp:2.7.5')

(This particular version of okhttp depends on okio 1.6.0.)

The problem is that the thirdparty jar library depends on okio v0.9.0 and what's worse, bundles it.

As a result, I get a dex conflict error at build time.

I was able to resolve this by manually removing okio from the jar file and this seems to work. But I'm wondering if there's a way to do this in gradle.

My question: Can I remove bundled, transitive ( <- I hope I'm using this word the right way) dependencies from an included jar during build-time with gradle?

Exclude the Group in the dependencies by using the below lines.

1.

configurations {
    all*.exclude group: 'com.android.support', module: 'support-v4'
}

2.

dependencies {
    compile 'com.android.support:support-v4:13.0.+'
    compile ("com.xxx:xxx-commons:1.+") {
        exclude group: 'junit', module: 'junit'
    }
}

3.

configurations {
    runtime.exclude group: "org.slf4j", module: "slf4j-log4j12"
}

Try this one.

For more detail

According to this discussion here https://groups.google.com/forum/#!topic/adt-dev/g1AiJM7PeVs , what you want to do is not possible.

The syntax suggested in the other answers is for "normal" Maven dependencies.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM