添加productFlavor到实验性Android gradle插件库



我有一个项目,使用实验性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

最新更新