I think we've accounted for the actual difference. A change in lib B meant that the resources were not found, so gradle fell back to A. Under normal circumstances, B will take precedence.
On Wednesday, February 25, 2015 at 9:07:36 PM UTC-8, Michael Wallstedt wrote: > > To follow up on this idea, what is the expected behavior with a config > like the following? > > app depends on: A, B > B depends on: A > > The gradle doc states "The priority of the merge order from lowest to > highest is libraries/dependencies -> main src -> productFlavor -> > buildType." From the perspective of module B, its resources should take > precedence over those in A (since A is a dependency). However, from the > perspective of the app module, A appears before B, so A should take > precedence. > > In practice, we have some evidence that the behavior is not easy to > predict. Some seemingly unrelated change in B caused it take priority, when > A had priority prior to the change. > > > On Friday, August 8, 2014 at 4:57:15 PM UTC-7, James Wald wrote: >> >> Huh okay, good to know. I never realized the order of project >> dependencies had this effect back in the Ant days either. Thanks again! >> >> On Friday, August 8, 2014 1:44:55 PM UTC-10, Xavier Ducrohet wrote: >>> >>> This is working as intended (it worked like this in Ant/ADT as well). >>> >>> We need to add diagnostic tools to let you devs understand exactly >>> what's going on. >>> >>> >>> On Fri, Aug 8, 2014 at 4:24 PM, James Wald <[email protected]> wrote: >>> >>>> I have a multi-project build that is structured like this: >>>> >>>> root/ >>>> app/ >>>> build.gradle -> dependencies: libA, libB >>>> libA/ >>>> src/main/res >>>> styles.xml -> @style/AppTheme >>>> build.gradle >>>> libB/ >>>> src/main/res >>>> styles.xml -> @style/AppTheme >>>> build.gradle >>>> >>>> When declaring app's dependencies, these produce different resources >>>> after the merge process: >>>> >>>> dependencies { >>>> compile project(':libA') >>>> compile project(':libB') >>>> } >>>> >>>> dependencies { >>>> compile project(':libB') >>>> compile project(':libA') >>>> } >>>> >>>> The library that is declared first in the dependencies block wins and >>>> the other library's @style/AppTheme resource is ignored. Since the >>>> libraries both declare @style/AppTheme and do not depend on each other, I >>>> was expecting the build to fail with a resource merging conflict. I'm >>>> wondering whether this is a bug or working as intended? >>>> >>>> -- >>>> 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. >>>> >>> >>> >>> >>> -- >>> 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/d/optout.
