在Android Studio和Gradle中的Android App Module中使用不同的构buildtypes的库模块

我有一个工作区,其中包含几个不同的应用程序和一个公共库项目,我期待从Eclipse转换到Android Studio,并从Ant转换到Gradle。 目前,在我们的ant脚本中,在编译之前,我们会根据构build是否用于debugging目的,QA,Beta /客户验收testing或用于Google Play发布,在我们的几个类中replace文本。

我想利用Gradle中的构build变体系统,并使用价值资源(布尔值,string等)来防止构build脚本replace我的类中的文本。

由于在所有应用程序产品中复制所有构buildtypes的不同值将成为维护头痛,因此我想将它们放入公共库中的构buildtypes中。 我尝试了这一点,但无论我在应用程序模块中使用哪种构buildtypes,应用程序模块都会引入公共库模块的Release版本。

有什么办法,我可以得到不同的应用程序模块的生成types使用相应的库模块的生成types?

这是从Android Studio中运行Build Variants工具窗口,将两个模块显示为使用debugging版本。 该图像应该读取debugging应用程序和库。

调试调试

Solutions Collecting From Web of "在Android Studio和Gradle中的Android App Module中使用不同的构buildtypes的库模块"

那么,Gradle Android插件根本无法构build依赖库模块的debuggingversion 。 这是一个众所周知的老问题,目前尚未解决。
你可以尝试从我提到的讨论中使用一些解决方法,特别是看看post#35和#38。

从Gradle插件用户指南中的 图书馆出版章节中获取的文档。

默认情况下,库只发布其版本变体 。 所有引用这个库的项目都将使用这个变体,不pipe他们自己构build哪个变体。 由于我们正在努力消除的Gradle限制,这是一个暂时的限制。

无论如何,有这个问题的解决scheme。

发布全部 – 可以通过将以下行添加到您的库项目来发布您的库项目的所有构build变体:

 android { publishNonDefault true } 

那么你应该修改你的应用程序项目的依赖关系如下:

 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版本的变体。

只需链接https://issuetracker.google.com/issues/36967265

 //in library Project build.gradle (lib): apply plugin: 'com.android.library' android { publishNonDefault true ... buildTypes { release { ... } debug { ... } } } dependencies { ... } //in main Project build.gradle (application) apply plugin: 'com.android.application' android { ... buildTypes { release { ... } debug { ... } } } dependencies { debugCompile project(path: ':libName', configuration: "debug") releaseCompile project(path: ':libName', configuration: "release") ... }