android-gradle-深入浅出-五:build type

默认情况下,Android插件自动为项目构建一个debug和一个release版本的应用。这两个版本的不同主要体现在在非开发机上的调试功能以及APK的签名方式。debug版本使用一个用公开的name/password创建的key来签名(这样构建的时候就不需要提示输入密码了)。release版本在构建的时候不会进行签名,而是稍后在做。

这个可以使用gradle中的BuildType对象来进行配置。默认情况下,2个BuildType的实例会被创建,一个debug,一个release。Android插件允许自定义这两个实例,当然你也可以创建其他的build type。配置由buildTypes这个DSL来完成:

android {
    buildTypes {
        debug {
            applicationIdSuffix ".debug"
        }

        jnidebug.initWith(buildTypes.debug)
        jnidebug {
            packageNameSuffix ".jnidebug"
            jniDebuggable true
        }
    }
}

上面的代码完成了下列配置:

1.配置默认的debug Build Type

设置debug版本的报名为<应用id>.debug,这样就可以在设备上同时安装debug和release版本了。

2.创建一个新的BuildType,名字是jnidebug,同时配置它是复制自debug Build Type。

配置jnidebug开启debug版本的JNI组件,添加一个不同的包名后缀。

创建一个新的的Build Types非常简单,只需要在buildTypes下面通过调用initWith或者使用闭包添加一个新的元素。下表是可以配置的属性以及默认值:

属性明   debug版本默认值  release或其他版本 默认值

debuggable  true  false

jniDebuggable   false   false

renderscriptDebuggable  false   false

renderscriptOptimLevel  3   3

applicationIdSuffix   null  null

versionNameSuffix   null  null

signingConfig   android.signingConfigs.debug  null

zipAlignEnabled   false   true

minifyEnabled   false   false

proguardFile  N/A (set only)  N/A (set only)

proguardFiles   N/A (set only)  N/A (set only)

出了这些属性,Build Types还可以用来配置代码和资源文件。针对每一个Build Type,一个新的对应的sourceSet会被创建,这个sourceSet使用一个默认的路径src/<buildtype名字>/。这就意味着Build Type的名字不能是main或者androidTest(这是由插件强制的),同时每个Build Type的名字必须是唯一的。

和其他的source sets一样,Build Type中的source set路径也是可以配置

android {
    sourceSets.jnidebug.setRoot('foo/jnidebug')
}

另外,对每一个Build Type,一个新的assemble<BuildType名字>任务会被创建.前面我已经讲过assembleDebug和assembleRelease任务了,这里就可解释这两个任务的来源了.当debug和release Build Types被预先创建的时候,他们对应的assemble任务也会被一起创建.

上面的build.gradle代码片段还会创建一个assembleJnidebug任务,assemble任务也会添加对assembleJniDebug任务的依赖,正如它对assembleDebug和assembleRelease任务的依赖一样。

小提示:你可以使用 gradle aJ命令来运行assembleJnidebug任务。

可能是使用场景:

仅在debug模式下使用的权限,release模式不使用。

debug时使用不同的实现

debug模式使用不同的资源(比如当一个资源的值依赖于签名的时候)

BuildType中的 代码/资源文件 将会被按照下列方式处理:

manifest配置会被merge到app manifest中

代码不会被merge,会被当做另一个代码目录(source folder)来使用

资源文件会覆盖同名的main中的资源文件

时间: 2024-10-12 03:32:56

android-gradle-深入浅出-五:build type的相关文章

Android Gradle Plugin指南(五)——Build Variants(构建变种版本)

原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants 6. Build Variants(构建变种版本) 新构建系统的一个目标就是允许为同一个应用创建不同的版本. 这里有两个主要的使用情景: 1.同一个应用的不同版本.例如一个免费的版本和一个收费的专业版本. 2.同一个应用需要打包成不同的apk以发布Google Play Store.查看http://developer.an

Android Gradle Plugin指南(五)——Build Variants(构建变种版本号)

原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants 6. Build Variants(构建变种版本号) 新构建系统的一个目标就是同意为同一个应用创建不同的版本号. 这里有两个基本的使用情景: 1.同一个应用的不同版本号.比如一个免费的版本号和一个收费的专业版本号. 2.同一个应用须要打包成不同的apk以公布Google Play Store.查看http://develop

深入浅出Android Gradle构建系统(三:build task)

接上一篇  深入浅出Android Gradle构建系统(二:项目结构) 构建任务(Build Tasks) java和Android通用的任务 在build文件中使用了Android或者Java插件之后就会自动创建一系列可以运行的任务. Gradle中有如下一下默认约定的任务: 1. assemble 该任务包含了项目中的所有打包相关的任务,比如java项目中打的jar包,Android项目中打的apk 2. check 该任务包含了项目中所有验证相关的任务,比如运行测试的任务 3. buil

Android开发之深入理解Android Studio构建文件build.gradle配置

摘要: 每周一次,深入学习Android教程,TeachCourse今天带来的一篇关于Android Studio构建文件build.gradle的相关配置,重点学习几个方面的内容:1.applicationId和package属性值的关系,2.怎么配置安全的自定义签名,3.两种构建类型的区别,4.为什么要定制产品的偏好配置?,5.怎么才能加快DEX文件的生成速度,6.为什么要将一个apk拆分成多个?,7.关于引入依赖包你不知道的秘密.通过这篇文章的学习,你会对build.gradle文件有一个

Android Gradle插件(plugin)版本(version)与Gradle、SDK Build Tools版本关系

具体关系如下图: 比如,Android Studio 2.0发布,其中有个新功能“Instant Run”,需要Android Gradle Plugin版本2.0.0以上,那么我们项目的.gradle文件就需要以下配置 buildscript { dependencies { classpath 'com.android.tools.build:gradle:2.0.0' } } Android Gradle Plugin 2.0.0对应所需的Gradle版本为“2.10 or higher”

Android Gradle 技巧之一: Build Variant 相关

Build Variant android gradle 插件,允许对最终的包以多个维度进行组合. BuildVariant = ProductFlavor x BuildType 两个维度 最常见的就是这样: productFlavors { pro { } fre { } } lintOptions { abortOnError false } buildTypes { debug { } release { } } 其中,buildTypes 一般都会有 debug 或者release,标

Android Gradle 构建工具(Android Gradle Build Tools)是什么?

转载地址:http://mrfu.me/android/2015/07/17/New_Android_Gradle_Build_Tools/ 译者地址:[翻]一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5 原文:First Look at New Android Gradle Build Tools: The new DSL structure and Gradle 2.5 双语对照地址: [翻-双语]一览新的 Android Gradle 构建工

Android Gradle 自定义Task 详解

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/76408024 本文出自[赵彦军的博客] 一:Gradle 是什么 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具. 它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置.面向Java应用为主. 当前其支持的语言限于Java.Groovy.Kotlin和Scala,计划未来将支持更多的语言.基

Gradle之Android Gradle Plugin 主要 Task 分析(三)

[Android 修炼手册]Gradle 篇 -- Android Gradle Plugin 主要 Task 分析 预备知识 理解 gradle 的基本开发 了解 gradle task 和 plugin 使用及开发 了解 android gradle plugin 的使用 看完本文可以达到什么程度 了解 android gradle plugin 中各个 task 作用 了解 android gradle plugin 中主要 task 的实现 阅读前准备工作 1.项目添加 android