android - 在 Android Studio 和 Gradle 的 Android App

我有一个工作区,其中包含多个不同的应用程序和一个公共(public)库项目,我希望将其从 Eclipse 转换为 Android Studio,并从 Ant 转换为 Gradle。目前,在我们的 ant 脚本中,我们会在编译之前替换一些类中的文本,具体取决于构建是用于调试目的、QA、Beta/客户验收测试还是用于发布到 Google Play。

我想利用 Gradle 中的构建变体系统并使用值资源( bool 值、字符串等)来防止构建脚本替换我的类中的文本。

由于在我的所有应用产品中为所有构建类型复制不同的值会让人头疼,因此我想将它们放在我的公共(public)库中的构建类型中。我试过了,但无论我在我的应用程序模块中使用哪种构建类型,应用程序模块都会拉入公共(public)库模块的发布版本。

有什么方法可以让应用模块的不同构建类型使用库模块的相应构建类型?

这是从 Android Studio 运行的,其中 Build Variants 工具窗口显示两个模块都使用调试变体。图像应读取应用程序和库的调试。

最佳答案

更新:publishNonDefault 已弃用且不再有效。所有变体现已发布。

文档取自 Library Publication Gradle Plugin User Guide中的章节.

By default a library only publishes its release variant. This variant will be used by all projects referencing the library, no matter which variant they build themselves. This is a temporary limitation due to Gradle limitations that we are working towards removing.

不管怎样,这个问题是有解决办法的。

全部发布 - 可以通过在库项目中添加以下行来发布库项目的所有构建变体:

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')
}

更改默认值 - 您可以通过在库项目中添加以下行来更改从库中发布的变体:

android {
    defaultPublishConfig "debug"
}

在这种情况下,您不必更改应用程序的依赖项,因为它总是会得到 debug 构建变体。

关于android - 在 Android Studio 和 Gradle 的 Android App Module 中使用不同构建类型的 Library Module,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28081846/

相关文章:

java - 为 Apache ANT 启用 javac 调试

ios - CFBundleVersion 必须是最多三个非负整数的句点分隔列表(警告 ITMS-9

shell - 在 jenkins 中运行命令 shell

c# - Visual Studio : How to properly build and spe

eclipse - "Order and Export"中的 "Java Build Path"选项

javascript - 仅当 src 发生更改时才运行构建

java - Maven:从多模块项目中只构建一个模块

android - Xamarin.Android 构建/部署非常缓慢。如何加快他们的速度?

visual-c++ - 在 Windows 8 上为 Visual Studio 2012 构建

rest - Sonatype Nexus REST Api 获取最新的构建版本