本地Android库模块和com.android.tools.build:gradle:3.0.0

时间:2017-07-10 12:24:01

标签: android gradle android-gradle

我目前正致力于通过提供的迁移指南将项目迁移到新的gradle插件(3.0.0):

https://developer.android.com/studio/preview/features/new-android-plugin-migration.html

在我们的Android项目中,我们有一个库模块和2个app模块。现在的库模块没有任何风味,只有调试和放大器。发布构建类型,而应用程序有多种风格和构建类型。

我发现的是,库模块的buildTypes必须与应用程序模块的完全匹配。例如,

如果app模块有一个名为debugProguard的buildType,那么库模块也必须有一个名为debugProguard的buildType。这意味着在库模块中我最终必须声明buildTypes没有正文:

    buildTypes {
        ...

        debugProguard {
        }

        ...
    }

(从这里: Android Studio 3.0 Error. Migrate dependency configurations for local modules

无论如何要避免这种情况吗?看起来奇怪的是,图书馆需要一些消费应用程序架构的知识。

理想情况下,我要做的是告诉构建系统使用库的某个buildType作为应用程序的buildType。例如,对于app中的buildType x,y,z,使用' debug'在图书馆中,对于i,j,k使用' release'。

提前致谢

1 个答案:

答案 0 :(得分:2)

他们刚刚在Android Studio 3.0的Canary 7版本中解决了这个问题:

  

您现在可以指定消费者应该使用的替代构建类型   来自生产者使用android.buildTypeMatching属性作为   如下所示。该插件仅在a时使用替代构建类型   找不到匹配的构建类型。

android {
    …
    // Let’s say your app configures a ‘staging’ build type and a library module
    // it depends on does not. You can use the property below to tell the Android plugin
    // to use a library’s ‘debug’ build type instead.
    buildTypeMatching ‘staging’, ‘debug’
}