【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.

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

Gradle Library项目的多渠道打包实现

项目中由于某种需求需要对Library项目也进行多渠道发布,如:App已经实现了多渠道打包,此时不同渠道包依赖的同一个Library中的某些资源(举个栗子)也需要根据渠道不同而改变,这个时候就需要对L...
  • codezjx
  • codezjx
  • 2015年10月30日 20:36
  • 2009

as加载工程卡在Gradle:Resolve dependencies'app:debugCompile'

参考:http://stormzhang.com/android/2015/03/29/android-support-library/ Android 新建工程 卡在Gradle:Resolve ...

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

问题描述: 第一次使用AndroidStudio打开已经存在的AndroidStudio项目,卡在Gradle:Resolvedependencies':app_debugCompile'步骤,即使进...

Android Studio中有六种依赖(Compile,Provided,APK,Test compile,Debug compile,Release compile)

在Android Studio中,开发会常用的6中依赖方法。 1.Compile compile是对所有的build type以及favlors都会参与编译并且打包到最终...

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

方法一:使用BuildConfig类修改参数值 Gradle Android自带BuildConfig配置类,在build工程的时候,可以在build/generated/sourc...

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

依赖、 Android Library和多项目设置 Gradle 项目可以对其他组件具有依赖关系。这些组件可以是外部的二进制包,或其他的 Gradle 项目。 二进制包的依赖 本地包 要配置一个...

Gradle入门指南(二)

转载请标明出处: 本文出自:【ouyida3的博客】注意:本文内容都是通过gradle命令行完成,不涉及eclipse的插件。1、先阅读Gradle入门指南(一)2、常用命令gradle -v g...
  • ouyida3
  • ouyida3
  • 2015年06月30日 18:50
  • 7922

Android studio导入library的正确方式

Android studio是一个非常强大的android程序开发软件。今天就说一下怎样通过AndroidStudio把开源库library项目导入到AndroidStudio的Module中。...
  • zwl5670
  • zwl5670
  • 2016年08月28日 10:19
  • 5192

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

在Android项目中,默认debug版与release版的包名相同,从而导致debug版与release版两者不能共存,为了方便开发时的调试,通过gradle我们可以实现让两者在一台手机上共存配置a...

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

原文地址:学习unicode 前言 昨天为了编译一个网上下载程序,下载vs2008,转换工程并加入自己的部分程序,最后还是运行不了。郁闷之余,查看错误,发现原来自己的代码有问题。比如v...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Gradle】管理库工程release及debug
举报原因:
原因补充:

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