2015-10-05 63 views
12

我有一个项目使用了实验gradle插件,即0.2.0。当我没有productFlavor时,我可以完美地将一个库模块集成到Android Studio中,并且一切正常。但是当库有productFlavor时,我的主项目没有找到库类。将productFlavor添加到实验Android gradle插件库

这个fix似乎不适用于实验gradle插件。有没有人有任何想法如何使口味与新的插件工作?

库:

android.productFlavor { 
    create ('flavor') { 
     ... 
    } 
} 

项目:

... 

dependencies { 
    compile project(':mylibrary') 
} 

回答

0

的语法是错误的。

与实验插件(0.2.1)口味界定外android块和正确的语法是android.productFlavors

model { 
    android { 

    } 

    android.productFlavors { 
     create("flavor") { 

     } 
    } 
} 
+0

这没有用。 – dragostis

+0

这个例子在'0.2.1'上适合你吗?当然有适当的语法。库中的'android.productFlavors'和主项目中的'compile project(':mylibrary')'。 – dragostis

+0

语法正确,并且与应用程序模块一起工作良好。我不知道它如何与图书馆合作。在我看来,你应该移动主模块中的味道(我从未在库中看到过味道) –

9

这可能帮助?

图书馆出版

默认的扩展库仅公布其释放的变体。这个变体 将被所有参考库的项目使用,无论它们自己构建哪个 变体。这是由于 我们正在努力消除的Gradle限制造成的临时限制。

您可以控制哪些变种获取与

android { defaultPublishConfig "debug" } 

注意,这个发布配置名称引用完整 变种的名义发表的。释放和调试只适用于没有 风味。如果你想同时使用香精 更改默认公布的变种,你可以这样写:

android {defaultPublishConfig "flavor1Debug" } 

也可以发布一个图书馆的所有变体。我们是 计划允许使用正常项目对项目 依赖关系(如上所示),但这是不可能的,因为现在由于 限制Gradle(我们正在努力解决这些问题)。 默认情况下,未启用所有变体的发布。为了使他们:

android {publishNonDefault true } 

重要的是要认识到,发布多个变种意味着 发布多个AAR文件是不是含有 多个变种单AAR重要。每个包装都包含一个变体。 发布变体意味着使这个aar可用作Gradle项目的输出 工件。这可以在 发布到Maven存储库时使用,或者当另一个项目在库项目上创建 依赖项时使用。。

摇篮具有默认的“神器的概念,这是一个是 书写时使用:

compile project(':libraries:lib2') 

要在其他公布的神器创建依赖关系,你需要 指定要使用的一个:

dependencies { 
    flavor1Compile project(path: ':lib1', configuration: 'flavor1Release') 
    flavor2Compile project(path: ':lib1', configuration: 'flavor2Release') 
} 

重要提示:请注意,公布的配置是一个完整的变型, 包括生成类型,需要这样被引用 进出口ortant:启用非默认发布时,Maven 发布插件将发布这些额外的变体作为额外的 包(带分类器)。这意味着这不是真的 兼容发布到Maven存储库。您应该将 发布到存储库的单个变体,或者启用所有配置 发布以获得项目间依赖关系。

从这里: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Referencing-a-Library

+0

我已经尝试[这](http://stackoverflow.com/questions/24860659/multi-flavor-app-based-on-multi-flavor-library-in-android-gradle)。 – dragostis

0

的事情比较复杂一点。 我的gradle上实验0.8.0

在您需要的库测试:

model{ 
    android { 
    ... 
    publishNonDefault true 

    productFlavors { 
       create("flavor1") { 
       } 
       create("flavor2") { 
       } 
      } 
    } 
} 

上的应用程序,你需要:

model { 
    android { 
    ... 
    publishNonDefault true 

    productFlavors { 
       create("flavor1") { 
       } 
       create("flavor2") { 
       } 
      } 
    } 
} 
//after the model is closed !! 
configurations { 
    flavor1DebugCompile 
    flavor1ReleaseCompile 

    flavor2DebugCompile 
    flavor2ReleaseCompile 
} 

dependencies { 
... 
flavor1DebugCompile project(path: ':mylibrary', configuration: 'flavor1Debug') 

flavor1ReleaseCompile project(path: ':mylibrary', configuration: 'flavor1Release') 

flavor2DebugCompile project(path: ':mylibrary', configuration: 'flavor2Debug') 

flavor2ReleaseCompile project(path: ':mylibrary', configuration: 'flavor2Release') 

    } 

希望,如果你完全运行组装你会得到2个apk,每个味道一个。 我已经从cmd中使用“./gradlew build”并获得了它们。 请注意,对于你的lib,你会得到一个AAR每个味道太

相关问题