我有一个项目,使用实验性gradle插件,即0.2.0
。当我没有productFlavor
时,我可以在Android Studio中完美地集成库模块,一切都可以完美地工作。但是当库有一个productFlavor
时,我的主项目找不到库类。
这个修复似乎不适用于实验性gradle插件。有人知道如何使口味与新插件工作吗?
库:
android.productFlavor {
create ('flavor') {
...
}
}
项目:
...
dependencies {
compile project(':mylibrary')
}
这可能有帮助?
图书馆出版
默认情况下,库只发布其版本变体。这种变体将被所有引用库的项目使用,无论哪个变种是他们自己造的。这是一个暂时的限制,由于我们正在努力消除的Gradle限制。
您可以使用
控制发布哪个变体android { defaultPublishConfig "debug" }
注意,此发布配置名称引用完整的变量的名字。发布和调试只适用于不存在的情况味道。如果要更改默认发布的变体使用口味,你会写:
android {defaultPublishConfig "flavor1Debug" }
也可以发布库的所有变体。我们是计划在使用正常的项目对项目时允许这一点依赖项(如上所示),但由于到Gradle的限制(我们也在努力修复这些限制)。默认情况下,不启用所有变体的发布。启用它们:
android {publishNonDefault true }
重要的是要意识到发布多个变体意味着发布多个aar文件,而不是单个aar包含多个变体。每个aar包装包含一个单一的变体。发布一个变体意味着使该文件作为输出可用Gradle项目的工件。这可以在以下情况下使用发布到maven存储库,或者当另一个项目创建依赖于库项目。
Gradle有一个默认"工件"的概念。这就是那个用于书写:compile project(':libraries:lib2')
要创建对另一个已发布构件的依赖,您需要指定使用哪一个:
dependencies { flavor1Compile project(path: ':lib1', configuration: 'flavor1Release') flavor2Compile project(path: ':lib1', configuration: 'flavor2Release') }
重要:注意发布的配置是一个完整的变体,包括构建类型,并且需要这样引用。重要:当启用非默认发布时,Maven发布插件将这些额外的变体发布为额外的包(带分类器)。这意味着这不是真的兼容发布到maven存储库。你应该将单个变体发布到存储库或启用所有配置发布项目间依赖项。
。
语法错误。
使用实验性插件(0.2.1)在android
块之外定义口味,正确的语法是android.productFlavors
model {
android {
}
android.productFlavors {
create("flavor") {
}
}
}
事情有点复杂。我已经在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,每个味道一个。我用的是"。/gradlew build",并得到它们。注意,对于您的库,您也将获得每种风格的AAR