I found some workaround, which I described here:
http://stackoverflow.com/questions/22313632/multi-flavor-compile-dependencies-in-gradle

Generally I parse start task (eg. "assembleFreeFroyoDebug") given to gradle and check what flavours are specified. I store flavours in global variables and use them in following way:

def getAdmobDependency() {
return groupFlavor == "Froyo" ? files(getSdkDir() + '/extras/google/admob_ads_sdk/GoogleAdMobAdsSdk-6.4.1.jar') : 'com.google.android.gms:play-services:+'
}

[...]

dependencies{
  freeCompile getAdmobDependency()
}

W dniu 2014-04-03 01:08, Xavier Ducrohet pisze:
Yes this is only going to work for jar dependencies. If you have an aar dependency, it's not going to work.

We're going to allow this but there's some work that needs to happen first before we can make progress on this.


On Wed, Apr 2, 2014 at 2:01 PM, Paweł Stankowski <[email protected] <mailto:[email protected]>> wrote:

    You're right Croc, I made a mistake in problem's description - it
    should be "freeFroyoCompile". However, I wrote it correctly in my
    gradle script.

    Thank you Xavier, it almost work for me. Your example was not
    compiling, but I did my best to use your idea.

    The code is below. Now I can compile for Froyo, but not for
    Gingerbread because resources from dependency are not accessible:
    ".../build/manifests/freegingerbread/debug/AndroidManifest.xml:40:
    error: Error: No resource found that matches the given name (at
    'value' with value '@integer/google_play_services_version')."

    When I run froyo version compiled with this script, admob jar
    seems not to be attached:
    "E/dalvikvm﹕ Could not find class 'com.google.ads.AdView',
    referenced from method
    pl.aambitny.spellscontainer.view.common.AdUtils.reloadAd"

    task fixDependencies << {
        def freeFlavor = android.productFlavors.free;
        def froyoFlavor = android.productFlavors.froyo;
        def gingerbreadFlavor = android.productFlavors.gingerbread;

        android.applicationVariants.all { variant ->
            def flavors = variant.productFlavors;
            if (flavors.contains(freeFlavor) &&
    flavors.contains(froyoFlavor)) {
                variant.javaCompile.classpath +=
    configurations.freeFroyoCompile;
            } else if (flavors.contains(freeFlavor) &&
    flavors.contains(gingerbreadFlavor)) {
                variant.javaCompile.classpath +=
    configurations.freeGingerbreadCompile
            }
        }
    }

    tasks.whenTaskAdded { theTask ->
        if (theTask.name.startsWith("compile")) {
            theTask.dependsOn "fixDependencies"
        }
    }

    On Thursday, March 27, 2014 4:34:43 PM UTC+1, Xavier Ducrohet wrote:

        It's not directly possible right now due to some issue in how
        we setup the tasks and variants. This should be possible in
        the long term though.

        Right now you could do something like this:

        configurations {
          freeFroyoCompile
        }

        dependencies {
          freeFroyoCompile ...
        }

        android.applicationVariants.all { variant ->
          if (variant is freeFroyo) {
            variant.javaCompile.classpath += freeFroyoCompile.files
          }
        }




        On Thu, Mar 27, 2014 at 7:37 AM, Croc <[email protected]> wrote:

            "froyoFreeCompile" is probably not recognized because I
            think you used the wrong order of flavors. The order
            should be the same as was declared in "flavorGroups", so
            it should actually be "freeFroyoCompile".


            On Saturday, March 22, 2014 8:06:49 PM UTC+1, Paweł
            Stankowski wrote:

                I have two flavor groups: "api" (froyo and gingerbread
                flavors) and "variant" (free and pro flavors).

                How to add dependency only to one build variant, ie
                only for froyo-free version? 'froyoFreeCompile' is not
                recognized by gradle (both freeCompile and
                froyoCompile are working as expected). If this is not
                possible directly, may I add such dependency using
                customized task?

                My build.gradle:

                ...
                    flavorGroups "variant", "api"

                    productFlavors {
                        free {
                            flavorGroup "variant"
                            packageName "..."
                        }
                        pro {
                            flavorGroup "variant"
                            packageName "..."
                        }

                        froyo {
                            flavorGroup "api"
                            minSdkVersion 8
                        }
                        gingerbread {
                            flavorGroup "api"
                            minSdkVersion 9
                        }
                    }
                }

                dependencies {
                    freeFroyoCompile files(getSdkDir() +
                '/extras/google/admob_ads_sdk/GoogleAdMobAdsSdk-6.4.1.jar')
                freeGingerbreadCompile
                'com.google.android.gms:play-services:+'
                }

                ...

-- 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]
    <mailto:[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 a topic in the Google Groups "adt-dev" group. To unsubscribe from this topic, visit https://groups.google.com/d/topic/adt-dev/JRUksl4XpWk/unsubscribe. To unsubscribe from this group and all its topics, send an email to [email protected] <mailto:[email protected]>.
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to