13

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

修复似乎不适用于实验性 gradle 插件。有谁知道如何使口味与新插件一起使用?

图书馆:

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

项目:

...

dependencies {
    compile project(':mylibrary')
}
4

3 回答 3

10

这可能有帮助吗?

图书馆出版

默认情况下,库仅发布其发布变体。所有引用该库的项目都将使用此变体,无论它们自己构建哪个变体。由于我们正在努力消除 Gradle 限制,这是一个临时限制。

您可以控制发布哪个变体

android { defaultPublishConfig "debug" }

请注意,此发布配置名称引用了完整的变体名称。发布和调试仅适用于没有风味的情况。如果您想在使用风味时更改默认发布的变体,您可以编写:

android {defaultPublishConfig "flavor1Debug" }

也可以发布库的所有变体。我们计划在使用正常的项目到项目依赖项(如上所示)时允许这样做,但由于 Gradle 的限制,目前这是不可能的(我们也在努力修复这些问题)。默认情况下不启用所有变体的发布。要启用它们:

android {publishNonDefault true } 

重要的是要意识到发布多个变体意味着发布多个 aar 文件,而不是包含多个变体的单个 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 存储库并不真正兼容。您应该将单个变体发布到存储库,或者为项目间依赖项启用所有配置发布。

这里

于 2015-10-18T08:44:40.200 回答
0

事情有点复杂。我已经在 gradle experimental 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”并得到了它们。请注意,对于您的库,您还将获得每种口味的 AAR

于 2017-07-03T15:19:00.053 回答
0

语法错误。

使用实验性插件(0.2.1),在块外定义风格android,正确的语法是android.productFlavors

model {
    android {

    }

    android.productFlavors {
        create("flavor") {

        }
    }
}
于 2015-10-05T20:48:09.487 回答