我有一个使用实验性gradle插件的项目,即0.2.0
。当我没有productFlavor
时,我可以在Android Studio中完美地集成库模块,一切都很完美。但是当库有productFlavor
时,我的主项目找不到库类。
此fix似乎不适用于实验性gradle插件。有没有人知道如何使用新插件制作口味?
库:
android.productFlavor {
create ('flavor') {
...
}
}
项目:
...
dependencies {
compile project(':mylibrary')
}
答案 0 :(得分:10)
这可能有帮助吗?
图书馆出版
默认情况下,库仅发布其版本变体。这个变种 将被引用库的所有项目使用,无论哪个 变种他们自己建立。由于这是暂时的限制 我们正努力消除的Gradle限制。
您可以使用
控制发布哪个变体android { defaultPublishConfig "debug" }
请注意,此发布配置名称引用了完整名称 变体名称。发布和调试仅在没有时才适用 口味。如果您想要更改默认发布的变体 使用flavor,你会写:
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存储库。你也应该 将单个变体发布到存储库或启用所有配置 发布项目间依赖关系。
从这里: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Referencing-a-Library
答案 1 :(得分:0)
语法错误。
使用实验性插件(0.2.1),在android
块之外定义风格,正确的语法为android.productFlavors
model {
android {
}
android.productFlavors {
create("flavor") {
}
}
}
答案 2 :(得分: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