I haven't tried to solve that particular problem, but you can try using 'provided' configuration for a local jar file. I saw complains that local file dependencies from 'provided' configuration are still included to aar packages though.
On 31 March 2014 23:58, Cheng Yang <[email protected]> wrote: > Hi Roman, Have you figure out how to exclude the jar befoer publishing? > > On Monday, July 22, 2013 9:45:58 PM UTC-7, Roman Mazur wrote: >> >> Yes, this is exactly what I want. >> But can I exclude a jar in libs folder from my dependencies before >> publishing? >> >> On Tuesday, 23 July 2013 02:11:29 UTC+3, Xavier Ducrohet wrote: >>> >>> The requirement on the library is not declared at runtime in this case, >>> so this is different from what I understood. >>> >>> In this case you would add flurry as a dependency on your library but >>> remove it from the dependencies when publishing the artifact. Then the app >>> would have to manually include the Flurry library if they want to use it. >>> >>> >>> On Fri, Jul 19, 2013 at 11:02 PM, Roman Mazur <[email protected]>wrote: >>> >>>> Let's imagine a library that provides some Android activities and can >>>> integrate with some statistics services, let it be Flurry to illustrate. >>>> But it does so only when the app actually uses that SDK. >>>> We cannot get Flurry SDK jar from a repository, so that it must be >>>> placed into libs folder of our Android library. But our library does not >>>> require this jar to provide its core functionality. But now we cannot use >>>> our library without omitting Flurry SDK jar being included to application >>>> package. >>>> I do understand that this library can be divided into two parts, like >>>> core and flurry integration. But as for me, going the described way can be >>>> useful too. >>>> >>>> >>>> On 19 July 2013 19:26, Xavier Ducrohet <[email protected]> wrote: >>>> >>>>> If it's determined at runtime whether the lib is needed or not, then >>>>> it's still needed to be packaged in case it's needed at runtime. am I >>>>> missing something? >>>>> >>>>> >>>>> On Tue, Jul 9, 2013 at 12:33 AM, Roman Mazur <[email protected]>wrote: >>>>> >>>>>> What if a jar placed in the libs directory is optional and its >>>>>> presence is determined in runtime by the library? Is there a way to >>>>>> exclude >>>>>> it from aar package? >>>>>> >>>>>> >>>>>> On Friday, 24 May 2013 22:26:52 UTC+3, Xavier Ducrohet wrote: >>>>>> >>>>>>> This is expected when referencing local jars from library projects. >>>>>>> There's no way around it, we need to include it in aar. >>>>>>> >>>>>>> I'm working right now to have those in a repository so that you can >>>>>>> reference artifact instead which will allow Gradle to resolve the >>>>>>> dependencies correctly when building an app using different library >>>>>>> projects that all depends on support-v4 or other support libs. >>>>>>> >>>>>>> >>>>>>> On Fri, May 24, 2013 at 12:24 PM, Traun Leyden >>>>>>> <[email protected]>wrote: >>>>>>> >>>>>>>> >>>>>>>> I'm creating a library using this build.gradle: >>>>>>>> >>>>>>>> ... >>>>>>>> repositories { >>>>>>>> mavenCentral() >>>>>>>> } >>>>>>>> >>>>>>>> dependencies { >>>>>>>> >>>>>>>> compile files('libs/android-support-v4.jar') >>>>>>>> >>>>>>>> instrumentTestCompile 'commons-io:commons-io:2.0.1' >>>>>>>> >>>>>>>> compile 'org.codehaus.jackson:jackson-core-asl:1.9.2' >>>>>>>> compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.2' >>>>>>>> >>>>>>>> } >>>>>>>> >>>>>>>> uploadArchives { >>>>>>>> repositories { >>>>>>>> mavenDeployer { >>>>>>>> repository(url: uri("../testrepo")) >>>>>>>> .. >>>>>>>> } >>>>>>>> } >>>>>>>> } >>>>>>>> .. >>>>>>>> >>>>>>>> >>>>>>>> and then I'm running "./gradlew :CBLite:uploadArchives", which >>>>>>>> causes an .aar to be generated in the local testrepo directory. When I >>>>>>>> unzip the .aar, I can see that it contains lib/ android-support- >>>>>>>> v4.jar. >>>>>>>> >>>>>>>> The problems start when I try to use the generated .aar as a >>>>>>>> dependency in another project. Here's the build.gradle from the >>>>>>>> project >>>>>>>> which consumes this dependency: >>>>>>>> >>>>>>>> ... >>>>>>>> repositories { >>>>>>>> mavenCentral() >>>>>>>> maven { >>>>>>>> url "file:///../couchbase-lite-and >>>>>>>> roid/CouchbaseLiteProject/testrepo" >>>>>>>> } >>>>>>>> } >>>>>>>> >>>>>>>> dependencies { >>>>>>>> compile files('libs/android-support-v4.jar') >>>>>>>> compile 'com.couchbase.cblite:CBLite:1.0' >>>>>>>> } >>>>>>>> ... >>>>>>>> >>>>>>>> >>>>>>>> when I try to build the project with "./gradlew assemble", I get >>>>>>>> this error: >>>>>>>> >>>>>>>> :HelloCBLite:dexDebug >>>>>>>> >>>>>>>> UNEXPECTED TOP-LEVEL EXCEPTION: >>>>>>>> java.lang.IllegalArgumentException: already added: >>>>>>>> Landroid/support/v4/app/ActivityCompatHoneycomb; >>>>>>>> at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSectio >>>>>>>> n.java:123) >>>>>>>> at com.android.dx.dex.file.DexFile.add(DexFile.java:163) >>>>>>>> at com.android.dx.command.dexer.Main.processClass(Main.java:490) >>>>>>>> at com.android.dx.command.dexer.Main.processFileBytes(Main.java >>>>>>>> :459) >>>>>>>> at com.android.dx.command.dexer.Main.access$400(Main.java:67) >>>>>>>> at com.android.dx.command.dexer.Main$1.processFileBytes(Main.ja >>>>>>>> va:398) >>>>>>>> at com.android.dx.cf.direct.ClassPathOpener.processArchive(Clas >>>>>>>> sPathOpener.java:245) >>>>>>>> at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPat >>>>>>>> hOpener.java:131) >>>>>>>> at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOp >>>>>>>> ener.java:109) >>>>>>>> at com.android.dx.command.dexer.Main.processOne(Main.java:422) >>>>>>>> at com.android.dx.command.dexer.Main.processAllFiles(Main.java: >>>>>>>> 333) >>>>>>>> at com.android.dx.command.dexer.Main.run(Main.java:209) >>>>>>>> at com.android.dx.command.dexer.Main.main(Main.java:174) >>>>>>>> at com.android.dx.command.Main.main(Main.java:91) >>>>>>>> 1 error; aborting >>>>>>>> :HelloCBLite:dexDebug FAILED >>>>>>>> >>>>>>>> FAILURE: Build failed with an exception. >>>>>>>> >>>>>>>> * What went wrong: >>>>>>>> Execution failed for task ':HelloCBLite:dexDebug'. >>>>>>>> > Running /Applications/Android >>>>>>>> > Studio.app/sdk/build-tools/android-4.2.2/dx >>>>>>>> failed. See output >>>>>>>> >>>>>>>> * Try: >>>>>>>> Run with --stacktrace option to get the stack trace. Run with >>>>>>>> --info or --debug option to get more log output. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> From the error, it looks like it's trying to add in classes from >>>>>>>> android-support-v4.jar into the classes.dex, which have already been >>>>>>>> added >>>>>>>> since they were included in the dependency .aar. >>>>>>>> >>>>>>>> Is the .aar of a library supposed to contain android-support-v4.jar? >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "adt-dev" group. >>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>> send an email to [email protected]. >>>>>>>> >>>>>>>> For more options, visit https://groups.google.com/groups/opt_out. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Xavier Ducrohet >>>>>>> Android SDK Tech Lead >>>>>>> Google Inc. >>>>>>> http://developer.android.com | http://tools.android.com >>>>>>> >>>>>>> Please do not send me questions directly. Thanks! >>>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "adt-dev" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to [email protected]. >>>>>> >>>>>> For more options, visit https://groups.google.com/groups/opt_out. >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Xavier Ducrohet >>>>> Android SDK Tech Lead >>>>> Google Inc. >>>>> http://developer.android.com | http://tools.android.com >>>>> >>>>> Please do not send me questions directly. Thanks! >>>>> >>>>> -- >>>>> You received this message because you are subscribed to a topic in the >>>>> Google Groups "adt-dev" group. >>>>> To unsubscribe from this topic, visit https://groups.google.com/d/ >>>>> topic/adt-dev/l1gELhPSSkM/unsubscribe. >>>>> To unsubscribe from this group and all its topics, send an email to >>>>> [email protected]. >>>>> >>>>> For more options, visit https://groups.google.com/groups/opt_out. >>>>> >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> Best regards, >>>> Roman Mazur >>>> >>>> Head of Android/Java Unit at Stanfy (http://stanfy.com.ua) >>>> Skype: roman.mazur.f >>>> LinkedIn: http://ua.linkedin.com/in/romanmazur >>>> Twitter: http://twitter.com/roman_mazur >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "adt-dev" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> For more options, visit https://groups.google.com/groups/opt_out. >>>> >>>> >>>> >>> >>> >>> >>> -- >>> Xavier Ducrohet >>> Android SDK Tech Lead >>> Google Inc. >>> http://developer.android.com | http://tools.android.com >>> >>> Please do not send me questions directly. Thanks! >>> >> -- > You received this message because you are subscribed to a topic in the > Google Groups "adt-dev" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/adt-dev/l1gELhPSSkM/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- Best regards, Roman Mazur Software engineer at Stanfy (http://stanfy.com.ua) Skype: roman.mazur.f LinkedIn: http://ua.linkedin.com/in/romanmazur Twitter: http://twitter.com/roman_mazur -- You received this message because you are subscribed to the Google Groups "adt-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
