【Gradle】管理库工程release及debug

原创 2016年05月31日 19:04:23

背景:

目前工程中是通过手动在代码中修改debug及release变量,这十分低效并且极易遗忘而造成低级错误。

需求是什么?

1.genkins上打aar包时候,直接根据genkins参数设置来决定打debug还是release包
2.本地工程依赖,需要能区分依赖debug还是release版本

库工程打包所遇到问题:

Library projects only publish their release variants for consumption by other projects or modules.
We’re working at fixing this but this is non trivial and requires a significant amount of work.

目前因为gradle的限制 android库工程只能发布release包 .见 https://code.google.com/p/android/issues/detail?id=52962 中的issue讨论

根据【参考1】的内容,借助publishNonDefault true 可改变这一现状。

本地工程依赖

库工程build.gradle中加上编译参数

android {
    buildTypes {
        release {
                buildConfigField "String", "ENV", "\"release\""
        }

        debug {
                buildConfigField "String", "ENV", "\"debug\""
        }
    }
    publishNonDefault true //需要加上该参数否则会提示debug not found
}

使用debug编译类型

App工程build.gradle加上工程依赖 debugCompile project(path: ‘:train’, configuration: ‘debug’)

使用release编译类型时

compile project(path: ‘:train’)
此时默认是为release,如果在Build Variants中强制选择为debug,就会报冲突,如【图1】

genkins上打aar包

genkins 执行assembleDebug 可以得到 XXX-debug.aar.

执行assembleRelease 可以得到 XXX-release.aar.

资料

android官方资料
https://guides.codepath.com/android/Building-your-own-Android-library#add-the-gradle-dependency

【图1】
这里写图片描述

【参考1】
来自 http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Referencing-a-Library

Library Publication

缺省情况下,无论你选用什么Build variant ,库工程都只会打出release包,这是由于Gralde语言的限制造成的,但如果想强制使用debug,可以如下指定:

android {
    defaultPublishConfig "debug"
}

defaultPublishConfig右边的Build variant量需要是variant全名,出现 Release and debug 的情况只有在没有设置flavor的前提下。如果有flavor就得如下:

android {
    defaultPublishConfig "flavor1Debug"
}

也可以设置打所有Build variant的包,在project-to-project依赖(工程依赖)的时候该功能显的很有用(google正在做,但是因为gradle的限制,有可能不work),该功能默认不开启的。

android {
    publishNonDefault true
}
dependencies {
    flavor1Compile project(path: ':lib1', configuration: 'flavor1Release')
    flavor2Compile project(path: ':lib1', configuration: 'flavor2Release')
}

Important: Note that the published configuration is a full variant, including the build type, and needs to be referenced as such.
Important: When enabling publishing of non default, the Maven publishing plugin will publish these additional variants as extra packages (with classifier). This means that this is not really compatible with publishing to a maven repository. You should either publish a single variant to a repository OR enable all config publishing for inter-project dependencies.

版权声明:本文为博主原创文章,未经博主允许不得转载。

AndroidStudio Gradle:Resolvedependencies':app:_debugCompile' 问题

问题描述: 第一次使用AndroidStudio打开已经存在的AndroidStudio项目,卡在Gradle:Resolvedependencies':app_debugCompile'步骤,即使进...
  • huangxiaominglipeng
  • huangxiaominglipeng
  • 2016年11月02日 17:08
  • 5558

解决被依赖module中BuildConfig.DEBUG的值总为false问题

在Android的实际开发中,一般会有这样的需求,debug和release版本不同,接口地址不同,同时控制日志是否打印等,系统为我们提供了一个很方便的类BuildConfig可以自动判断是否是deb...
  • fly_yuge
  • fly_yuge
  • 2016年06月24日 17:28
  • 5768

Android Gradle配置Debug和release参数的方法

方法一:使用BuildConfig类修改参数值 Gradle Android自带BuildConfig配置类,在build工程的时候,可以在build/generated/sourc...
  • yfloctar
  • yfloctar
  • 2016年05月18日 11:10
  • 4042

build gradle debug 和release 包名指定会相互覆盖的问题

build gradle debug 和release 包名指定会相互覆盖的问题 现象:在使用gradle重命名apk的时候,本想为debug和release分别命名不同的后缀,但是,每次编译,不管...
  • mybook1122
  • mybook1122
  • 2017年05月25日 18:02
  • 1186

使用Gradle管理Debug/Release版本的Key

在开发过程中经常会遇到debug/release版本中某个值需要动态改变方便开发和测试,就像BuildConfig的DEBUG一样,在debug版本中为true,release版本中为false,这样...
  • tiankong1206
  • tiankong1206
  • 2015年12月30日 11:41
  • 4696

Android官方技术文档翻译——新构建系统概述

这篇文章从去年就开始翻译的了,无奈项目较赶我翻译的速度又慢,翻译期间Google官网又对它不断更新,以致拖到了现在。这一篇文档是对Android新构建系统的概述,列出了与它相关的一些文档,以及这个新构...
  • maosidiaoxian
  • maosidiaoxian
  • 2015年03月05日 09:17
  • 12813

Android官方技术文档翻译——Gradle 插件用户指南(4)

依赖、 Android Library和多项目设置 Gradle 项目可以对其他组件具有依赖关系。这些组件可以是外部的二进制包,或其他的 Gradle 项目。 二进制包的依赖 本地包 要配置一个...
  • maosidiaoxian
  • maosidiaoxian
  • 2014年12月16日 08:47
  • 7551

Android Studio 中Gradle配置debug使用release的签名

当我们在做微信微博sdk分享的时候调试非常麻烦,因为要使用对应的签名版本才能调用sdk成功。 当我们使用AndroidStudio的Gradle之后会很简单的解决这个问题。 1.我们把签名文件放到工...
  • u010785585
  • u010785585
  • 2015年09月08日 09:14
  • 1171

记一次对Gradle同一项目变种版本的配置

Build Variants(构建变种版本)主要应对 1.同一个应用的不同版本。例如一个免费的版本和一个收费的专业版本 2.同一个应用需要打包成不同的apk以发布Google Play Store...
  • sinat_34213277
  • sinat_34213277
  • 2017年01月17日 16:30
  • 372

使用gradle实现Android项目debug版与release版共存

在Android项目中,默认debug版与release版的包名相同,从而导致debug版与release版两者不能共存,为了方便开发时的调试,通过gradle我们可以实现让两者在一台手机上共存配置a...
  • lj402159806
  • lj402159806
  • 2017年02月09日 20:29
  • 2358
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Gradle】管理库工程release及debug
举报原因:
原因补充:

(最多只允许输入30个字)