publishNonDefault true过时

publishNonDefault true

该属性现在已过时。

> Configure project :Gpu-Image
publishNonDefault is deprecated and has no effect anymore. All variants are now published.

该属性用途:project中的某一library需要根据情况使用其debug版本或release版本,据个人所知以前是默认只提供release版本,如果需要debug版本需要手动在module的build.gradle中进行手动设置和更改默认提供版本。也可以设置configuration,并在主module中releaseCompile和debugCompile动态使用library的不同版本。

转载一个示例如下,具体本人没有试:

这里我们为baselibrarymodule 的 debug 和 release 模式分别准备一套代码,整体 module 结构图如下所示:

publishNonDefault true过时_第1张图片

 

如上图所示,debug 和 release 中都有一个包名和类名相同的Name类,但其中的代码是不一样的。具体可以查看源码。为了能够在 debug 和 release 模式下分别使用设置的代码,需要使用sourceSets控制代码的合并,如下:

android {
    // ...
    sourceSets {
        debug {
            java.srcDirs = ['src/main/java', 'src/debug/java']
        }
        release {
            java.srcDirs = ['src/main/java', 'src/release/java']
        }
    }
}

此外在发布该 library 时,需要指定一些设置,如下:

android {
    // ...
    defaultConfig {
        // ...
        defaultPublishConfig 'release'
        publishNonDefault true
    }
}

说明:

  • defaultPublishConfig 'release',默认 library 只会生产 release 下的版本,此版本将会被所有项目使用,通过defaultPublishConfig可以控制默认生产哪个版本的库。
  • publishNonDefault true,默认情况下不能生产所有版本的 library,通过设置publishNonDefaulttrue,可以同时生产所有版本的 library。

业务组件 module 依赖不同的基础组件生产的 library,如下:

dependencies {
    // ...
    debugCompile project(path: ':baselibrary', configuration: "debug")
    releaseCompile project(path: ':baselibrary', configuration: "release")
}



作者:whilu
链接:https://www.jianshu.com/p/894e7878de17
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

 

目前升级as至 3.3.2,gradle插件3.3.2  gradle版本4.10.1及以上。publishNonDefault该属性已过时且不再起作用。All variants are now published.会同时发布所有变体版本,根据引用方设置或默认变体自动引用相应的library变体。如我的主module使用debug版本则自动引用library的debug版本,BuildConfig.DEBUG=ture。可以在实际项目中验证后再使用。

 

你可能感兴趣的:(android)