You can build different types of your dependencies to binary artefacts and include different versions in main project using product flavored dependency (or buildType)
For example: main_project build.gradle: android { productFlavors { flavor1 flavor2 } } dependencies { flavor1Compile 'dependencyVersionForFlavor1' flavor2Compile 'dependencyVersionForFlavor2' } But as I know library projects don't support product flavors On Wednesday, February 18, 2015 at 9:02:25 PM UTC+3, Greg Macdonald wrote: > > Thanks, Artem > > That makes sense and surely it is a good use case. > > In our case, we need all modules to be built with the same build variant. > It makes more sense to me that dependencies included as pre-built artifacts > will come in as release built modules, but for sub-projects that are built > as part of building the app, it makes sense that this is code also under > development and when I want the app to be built with a particular build > target and flavor, I should have the option of this being applied to those > modules also. The fact that it does not work this way by default is odd to > me. I'm pretty sure that other IDE's I've used for different compiled > languages all work this way. > > thanks, > greg > > On Wed, Feb 18, 2015 at 8:39 AM, Artem Zinnatullin <artem.zi...@gmail.com > <javascript:>> wrote: > >> Greg, I am really sorry for my first reply to your post, please accept my >> apologies :( >> >> It's design of Gradle: build of one project should not affect build state >> of other projects involved in build process. >> >> Library subproject should not know about build params of main project, >> because you should be able to replace it as already built artefact. >> >> But you can try to share some pieces of Gradle configuration between >> projects, for example you can declare some variables in root build.gradle >> like this: project.ext { someVar } >> and then read it in subproject: project.someVar, it can help with flavor >> specific build config fields >> >> On Wednesday, February 11, 2015 at 9:22:56 PM UTC+3, Greg Macdonald wrote: >>> >>> Kevin, what do your numbers 1-5 relate to? esp. 3 & 4 >>> >>> >>...can't necessarily flow the variants up to the libraries... >>> >>> No, you cannot at all affect the build of sub-projects. Everything but >>> your main app project are built as release. So, for example, referencing >>> BuildConfig.DEBUG from code gives a different answer from the app project >>> than from a subordinate library project. >>> >>> On Wed, Feb 11, 2015 at 6:11 AM, Kevin Schultz <krsc...@gmail.com> >>> wrote: >>> >>>> I don't understand these points at all. >>>> >>>> 1) You can maintain Eclipse & AS support at the same time. Back when AS >>>> was actually unstable and Eclipse was actually more useful, I maintained >>>> both ant & gradle support in our project so that our team could use >>>> either. >>>> Keep the source structure as Eclipse expects it, and change the sourceSets >>>> in the gradle config to match. There are examples of this online. >>>> >>>> Of course, you will quickly find that all the power of Gradle is lost >>>> if you handcuff yourself to only features that also work under Ant. I made >>>> it such that you could build a debug build with Ant, but if you wanted the >>>> other build types, you had to use Gradle. That allowed the team to >>>> continue >>>> using the tools they wanted while we experimented with AS. Note that this >>>> was fall of 2013. Our team of 5 Android developers switched relatively >>>> soon >>>> their after, and we haven't looked back. I personally use the canary >>>> channel of AS, and I may have lost 2 business days to tools problems, out >>>> of hundreds and hundreds of days. The productivity gain has more than made >>>> up for it. New features may have issues, but generally speaking we're >>>> talking about issues with feature that didn't exist in Eclipse + ADT >>>> anyway, and that doesn't stop you from getting your work done as you had >>>> before. >>>> >>>> There are very narrow use cases where AS doesn't have the support you >>>> need, but outside of native code the argument that "Android Studio is not >>>> ready for prime time" doesn't hold any water. >>>> >>>> 2) Most libraries will work - with the exception of AAR - in Eclipse. >>>> However, I can tell you most of the people writing libs are using the >>>> modern tools. >>>> >>>> 3) Yes >>>> >>>> 4) ? >>>> >>>> 5) Module support under AS is way better than under Eclipse. It's >>>> trivial to add Java or Android library modules to the project and it works >>>> quite well. I have split my app into a few different modules and I'm quite >>>> happy with it. You can't necessarily flow the variants up to the >>>> libraries, >>>> but there wasn't even a mechanism for something like build variants in >>>> Ant, >>>> so I'm not sure I see how that is a knock on Gradle. >>>> >>>> >>>> On Wednesday, February 11, 2015 at 1:10:34 AM UTC-5, Greg Macdonald >>>> wrote: >>>>> >>>>> Thanks, Kiran. We've a long term Android guy on our team who is >>>>> experienced with eclipse & ant and our project is yet small; but, yes, >>>>> I'm >>>>> concerned about switching and I sure don't want to get stuck in an >>>>> old-tools world once AS is working well enough and moving forward. >>>>> >>>>> So, what I hear from you in balance is: >>>>> - if one goes back, we all go together >>>>> - 3rd party libs may not be maintaining support for eclipse-centered >>>>> tools >>>>> - ADT support for eclipse may wane (yea, in keeping with comments by >>>>> ADT lead) >>>>> - Binary repos (I'm thinking this isn't a big deal, isn't maven under >>>>> jcenter anyway?) >>>>> >>>>> BTW, we are also considering turning the project into one monolithic >>>>> project for now and breaking it up into sub-projects again when the tools >>>>> support it better, but it's hard to maintain discipline around >>>>> hierarchical >>>>> order and separation in such a world. Alas and alack. >>>>> >>>>> Thanks again, Kiran >>>>> >>>>> >>>>> On Tue, Feb 10, 2015 at 8:17 PM, Kiran Rao <techie....@gmail.com> >>>>> wrote: >>>>> >>>>>> @Greg, >>>>>> >>>>>> I think reverting is more difficult because you will have to do >>>>>> everything manually. While there is a migration path (and tooling >>>>>> support) >>>>>> for "converting" your project from Eclipse to Android Studio, there is >>>>>> no >>>>>> support for the opposite. >>>>>> >>>>>> You will find documentation on how you can make some adjustments to >>>>>> the sourceSets in build.gradle such that the same project can be worked >>>>>> on >>>>>> from both AS and Eclipse + ADT - however in practice this doesn't work >>>>>> well >>>>>> (and I have tried this on a team of only two developers!) >>>>>> >>>>>> I have also found that of late, most open source libraries use the >>>>>> AS/Gradle structure. You could of course grab the dependencies as >>>>>> binaries, >>>>>> or better, use Maven with your Eclipse/ADT setup. But then again, >>>>>> several >>>>>> libraries are distributed as AARs and last time I checked, Eclipse/ADT >>>>>> had >>>>>> trouble consuming AARs (at least Eclipse/ADT without Maven plugins did). >>>>>> >>>>>> What I'm trying to arrive at is that reverting to Eclipse might imply >>>>>> reduced support going forward - both from the Tools team as well as from >>>>>> the community. >>>>>> >>>>>> On Wednesday, 11 February 2015 06:56:18 UTC+5:30, Greg Macdonald >>>>>> wrote: >>>>>>> >>>>>>> OK, I should add to 'factual', input that is useful. I'm really not >>>>>>> interested in religious wars or 'tude. >>>>>>> >>>>>>> On Tue, Feb 10, 2015 at 5:20 PM, Artem Zinnatullin < >>>>>>> artem.zi...@gmail.com> wrote: >>>>>>> >>>>>>>> nano + javac is better choice for your team. >>>>>>>> >>>>>>>> For what reason you want to use flavors in not app modules? Seems >>>>>>>> to be architect/design problem. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> P.S. >>>>>>>> >>>>>>>> Gradle is stable, working build tool, Android Gradle Plugin and >>>>>>>> Android Studio are stable too, just fix dependecies versions. I >>>>>>>> started to >>>>>>>> use them from first public releases and I even changed 3 companies >>>>>>>> after >>>>>>>> this. >>>>>>>> >>>>>>>> >>>>>>>> I just can't understand why people use Ant in 2015, okay, you don't >>>>>>>> want to use Gradle, but there is Maven. It's just unwillingness to >>>>>>>> learn >>>>>>>> new things, and in my opinion — it's unprofessional. >>>>>>>> >>>>>>>> Learning new should not be hard, it should be fun and useful for >>>>>>>> yourself. >>>>>>>> >>>>>>>> Just start with small personal project with Android Studio and >>>>>>>> Gradle, when you'll feel comfortable with them, try to switch work >>>>>>>> project >>>>>>>> to Gradle + AS. >>>>>>>> >>>>>>>> -- >>>>>>>> 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 adt-dev+u...@googlegroups.com. >>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>> >>>>>>> >>>>>>> -- >>>>>> 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 adt-dev+u...@googlegroups.com. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>>>> -- >>>> 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 adt-dev+u...@googlegroups.com. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >> 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 adt-dev+u...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- 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 adt-dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.