Gradle Library项目的多渠道打包实现

FBI Warning:欢迎转载,但请标明出处:http://blog.csdn.net/codezjx/article/details/49516259,未经本人同意请勿用于商业用途,感谢支持!

项目中由于某种需求需要对Library项目也进行多渠道发布,如:App已经实现了多渠道打包,此时不同渠道包依赖的同一个Library中的某些资源(举个栗子)也需要根据渠道不同而改变,这个时候就需要对Library进行多渠道发布了。

实现起来也比较简单,步骤如下:

1.先对Library进行多渠道发布:

apply plugin: 'com.android.library'

android {
    ...
    publishNonDefault true
    productFlavors {
        flavor1 {}
        flavor2 {}
    }
    ...
    sourceSets {
        flavor1 {
            res.srcDirs = ['xxx-folder/flavor1/res']
        }
        flavor2 {
            res.srcDirs = ['xxx-folder/flavor2/res']
        }
    }
}

注意其中的publishNonDefault true,这个是关键,主要是用来设置Library发布所有的variants

为何需要这么设置?请允许我啰嗦几句:默认情况下Library项目只会发布它的release aar包,这也就是为什么库项目中的BuildConfig.DEBUG一直是false的原因

可以通过defaultPublishConfig "debug"来修改这种默认的发布机制(针对没有渠道的情况)
若已经有多个渠道,则必须指定完整的variant名字,如:defaultPublishConfig "flavor1Debug"

2.修改App项目中的dependencies方式

根据App不同的渠道编译Library不同的渠道:

dependencies {
    ...
    flavor1Compile project(path: ':lib', configuration: 'flavor1Release')
    flavor2Compile project(path: ':lib', configuration: 'flavor2Release')
    ...
}

注意:若遇到异常:Gradle DSL method not found: ‘flavor1Compile()’,请把dependencies{}移至build.gradle脚本最下方

参考:
http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Library-Publication
http://stackoverflow.com/questions/24860659/multi-flavor-app-based-on-multi-flavor-library-in-android-gradle/24910671#24910671

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值