背景:

目前工程中是通过手动在代码中修改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.

【Gradle】管理库工程release及debug相关推荐

  1. VC++ 工程添加 Unicode Debug 和 Unicode Release编译支持

    原文地址: 学习unicode 前言 昨天为了编译一个网上下载程序,下载vs2008,转换工程并加入自己的部分程序,最后还是运行不了.郁闷之余,查看错误,发现原来自己的代码有问题.比如vs2008不再 ...

  2. release,debug库互调用,32位,64位程序与库互调用

    以下是基于visual studio 2015和cmake的实验 1,release和debug的应用程序和库无法互调用,会有比较直接的提示,大意是说库不兼容 2,win32和x64的应用和库无法互调 ...

  3. C++动态库*.dll文件的Debug/Release版本是否可以混用(交叉用)?

    1.现象: 使用一些第三方的dll,比如opencv,会分别生成debug和release的dll,在exe中必须要引用指定版本的dll,不能混用,否则会出错:同样的道理,jsoncpp库也是. 但是 ...

  4. maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

    maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository. ...

  5. pom配置之:distributionManagementsnapshot快照库和release发布库

    本文转载自:  铁木箱子的mzone的博客: http://www.mzone.cc/article/277.html http://www.mzone.cc/article/279.html 在使用 ...

  6. maven2中snapshot快照库和release发布库的应用

     http://www.mzone.cc/article/279.html 转载声明] 转载时必须标注:本文来源于铁木箱子的博客http://www.mzone.cc [本文地址] 本文永久地址是 ...

  7. Xcode中release和debug模式

    本人对Xcode中的release模式和debug模式很是疑惑,于是今天对其进行的调研,写下笔记以备查阅 Debug是调试版本,包含调试信息,并且不做任何优化,便于程序猿进行调试. Release 是 ...

  8. gradle创建web工程_Gradle入门:创建Web应用程序项目

    gradle创建web工程 这篇博客文章描述了如何使用Gradle创建一个Web应用程序项目. 更具体地说,我们想创建一个使用Java的Web应用程序项目,将我们的Web应用程序打包到WAR文件中,并 ...

  9. pom.xml 配置之:snapshot 快照库和 release发布库 的区别

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.如果在发布时使用 mvn deploy -P release 的命令,那么会自动使用0.1作为发 ...

最新文章

  1. replace 使用函数作为第二参数
  2. 花式方法搞定不同vlan的主机互通
  3. npm包管理机制引质疑:又一安装程序中发现恶意代码,开发者账户频遭劫持
  4. iOS发展系列II - UILabel 使用摘要
  5. halcon获取图像中心点_关于Halcon的复杂图形中心点查找
  6. Kotlin入门(23)适配器的进阶表达
  7. 【资料下载】Python 第九讲——灵活运用docker,实现深度学习的环境搭建...
  8. 字符串反转的进一步应用----单词反转
  9. 无线路由器 tftp服务器怎么开启,水星路由器tftp服务器怎么开启
  10. Excel实现多表关联查询-VLOOKUP
  11. Windows任务管理器命令行查进程
  12. iphone手机设置自定义铃声(mac环境下设置)
  13. 韩老师讲SQL2005数据库开发 环境准备代码
  14. 输出一个小游戏——三子棋
  15. 派森python_python2.7下载-派森(Python)下载v2.7.18 官方正式版【x86|x64】-西西软件下载...
  16. 手把手硬件电路详细设计过程
  17. 2019-04-25t16:19:49 转成正常的年月日
  18. word中仿宋字体显示不清楚的问题
  19. python解密(LinkedIn)领英邮箱激活链接验证并获取真实验证链接
  20. 2022-2028年中国教育行业市场行情动态及投资潜力研究报告

热门文章

  1. python连接oracle批量写入_oracle大数据量python导入实践-1w/s
  2. PHP7CMS 无条件前台GETSHELL
  3. WCF wsHttpBinding之Transport security Mode, clientCredentialType=”Basic”
  4. FineUIMvc随笔(6)对比WebForms和MVC中表格的数据库分页
  5. 机器学习——利用K-均值聚类算法对未标注数据分组
  6. maven配置默认jdk版本
  7. ubuntu 运行android sdk 下的工具adb报bash: ./adb: No such file or directory
  8. .中英文系统底层编码导致乱码问题
  9. ActivityGroup是如何对嵌入的Activitys进行管理的
  10. 零基础快速入门SpringBoot2.0教程 (二)