4.3.4 库工程发布

默认情况下库工程只能发布 release 版本。这个版本用于所有工程的引用,和工程本身要构建什么样的版本无关。这是属于 Gradle 的限制,我们正在努力消除这个限制。

你可以通过如下方式控制发布的各种版本

  1. android {
  2. defaultPublishConfig "debug"
  3. }

注意这里的发布配置的名字使用的是一个完整的版本名字。 Releasedebug 仅仅适用于没有其他版本的时候使用。如果你想用其他版本代替默认发布的版本,你可以这么做:

  1. android {
  2. defaultPublishConfig "flavor1Debug"
  3. }

发布库工程的所有不同版本也是可能的。我们计划在在一般的工程对工程依赖中(就像上面说的)允许这么做。但是这还不被Gradle允许(我么正在努力修复这个问题)。

默认情况下,没有启用发布所有不同的版本功能,你可以这么启用他们:

  1. android {
  2. publishNonDefault true
  3. }

要意识到,发布多个不同的版本意味着会有多个 aar 文件,而不是一个 aar 文件中包含多个不同的版本。每个aar包只包含一个版本。
发布一个版本意味着要生成一个可用的 aar 文件作为 Gradle 工程的输出构件。它既可以被发不到一个 maven 仓库,也可以被其他工程依赖引用。

Gradle有默认‘构件’的概念,当作如下配置时会用到:

  1. compile project(':libraries:lib2')

要创建另外一个已发布构建的依赖,你需要指定需要哪一个:

  1. dependencies {
  2. flavor1Compile project(path: ':lib1', configuration: 'flavor1Release')
  3. flavor2Compile project(path: ':lib1', configuration: 'flavor2Release')
  4. }

重要: 注意发布配置的是一个完整的版本,包括 build type,并且需要像上面一样被引用。

重要: 当启用了非默认发布的时候,Maven 的发布插件将会发布其他版本作为扩展包(按分级)。这意味着和 maven 上的版本不一定兼容。你应该发布一个单独的版本到仓库中或者为工程间的依赖启用所有的发布配置。