作者:骨头少校_726 | 来源:互联网 | 2023-05-25 16:20
我有一个工作区,包含几个不同的应用程序和一个公共的库项目,我希望从Eclipse转换为Android Studio,从Ant转换为Gradle.目前,在我们的ant脚本中,我们会在编译之前替换一些类中的文本,具体取决于构建是用于调试目的,QA,Beta /客户验收测试还是用于发布到Google Play.
我想利用Gradle中的构建变体系统并使用值资源(布尔值,字符串等)来防止构建脚本替换我的类中的文本.
由于在我的所有应用产品中复制所有构建类型的不同值将是一个维护问题,我想将它们放在我的公共库中的构建类型中.我尝试了这个,但无论我在我的app模块中使用哪种构建类型,app模块都会引入公共库模块的Release版本.
有没有什么办法可以让app模块的不同构建类型使用库模块的相应构建类型?
这是从Android Studio运行的,其中Build Variants工具窗口将两个模块显示为使用调试变体.图像应该读取应用程序和库的调试.
1> Aleksandar I..:
从Gradle Plugin用户指南中的Library Publication章节获取的文档.
默认情况下,库仅发布其版本变体.所有引用库的项目都将使用此变体,无论它们自己构建哪种变体.由于Gradle限制我们正在努力删除,这是一个临时限制.
无论如何,有这个问题的解决方案.
全部发布 - 可以通过向库项目添加以下行来发布库项目的所有构建变体:
android {
publishNonDefault true
}
然后你应该修改app项目中的依赖项,如下所示:
dependencies {
releaseCompile project(path: ':yourLibrary', configuration: 'release')
debugCompile project(path: ':yourLibrary', configuration: 'debug')
// This is also possible
customCompile project(path: ':yourLibrary', configuration: 'custom')
}
更改默认值 - 您可以通过向库项目添加以下行来更改从库中发布的varaint:
android {
defaultPublishConfig "debug"
}
在这种情况下,您不必更改应用程序的依赖项,因为它始终会获得debug
构建变体.