build.gradle中buildTypes和productFlavors详解

简介: 用过AS的程序猿都知道build.gradle文件的作用,但我仍坚信还是有很多猿友不知道build.gradle文件中的一些代码的意思到底是什么? 这里来说下buildTypes和productFlavors的作用,顺便会说下其他一些配置。

用过AS的程序猿都知道build.gradle文件的作用,但我仍坚信还是有很多猿友不知道build.gradle文件中的一些代码的意思到底是什么? 这里来说下buildTypes和productFlavors的作用,顺便会说下其他一些配置。 首先,我们刚创建Android 项目的时候as会自动帮我们创建build.gradle文件,注意build.gradle文件会创建两个,一个是属于项目的,还有一个是属于module的。这里说的module中的build.gradle文件中的一些配置。默认创建的build.gradle文件中的代码如图:

默认配置
当然了,还会有一些dependencies
dependencies
这里,我们看到文件中已经创建了buildTypes了,里面包含了一些release的配置,即我们发布apk的配置(主要是混淆文件)。同时as默认帮我们创建了一个debug的版本的配置,使用默认的签名证书,通过Build Variant就可以看到。
Build Variant
buildTypes主要就是配置发布版本和 测试版本的一些配置以及混淆文件等,现在主要来说下productFlavors的配置,这个字段在创建项目的时候默认是不会添加的,需要自己手动添加。百度一搜,会有很多类似博客
这里写图片描述
这里主要说的是博主自己的理解以及使用方法。 1 productFlavors主要是用来做多渠道打包等操作会用到 2 如果你的应用会使用到不同的API_URL,不同的版本号,相同的代码需要生成不同的apk文件等等,都可以在productFlavors上做文章 第一点,我就不多说了,相信很多猿友都有各种方法来进行多渠道打包了,比如友盟、美团等,现在来说第二点,相信很多猿友都有这种感觉——一个应用需要有很多个版本进行使用,比如说debug版本,测试版本,还有发布版本,并且各个版本使用的接口地址还不一样,这种情况就需要每次去修改接口地址并重新打包测试,至少我刚开始也是这样的,0..0。 这里使用productFlavors来进行配置就会简单很多了,比如你的两个版本需要使用不同的接口地址,不同的常量,不同的appName,不同的logo,不同的包名都可以进行配置,如下:
这里写图片描述
这里的prodcutFlavors的写在andoid目录下的,请注意。我这里分了两个版本一个为local,一个是us(随便命名的),可以看到使用了不同的接口地址,不同的包名等等,当然了这里需要在你的module的src目录下分别创建你新建的两个版本命名的文件夹,
这里写图片描述
同时在文件夹中创建 Java文件夹和res文件夹,res文件夹主要就是用来替换应用的logo的,替换logo需要进行如下配置:
sourceSets {

    main {
        manifest.srcFile 'src/main/AndroidManifest.xml'
        java.srcDirs = ['src/main/java']
        resources.srcDirs = ['src/main/java']
        aidl.srcDirs = ['src/main/java']
        renderscript.srcDirs = ['src/main/java']
        res.srcDirs = ['src/main/res']
        assets.srcDirs = ['src/main/assets']
        jniLibs.srcDirs = ['libs']
    }

    local.java.srcDirs = ['src/local/java']
    local.res.srcDirs = ['src/local/res']
    us.java.srcDirs = ['src/us/java']
    us.res.srcDirs = ['src/us/res']

}

这里表示local和us版本下的文件会优先使用,最后打包的时候会跟main文件下的资源文件一起打包的,这时你通过Build Variants切换不同的版本安装,会出现不同的logo,并且应用不会冲突。 至于配置中的API_URL可以通过BuildConfig进行访问。 最后,打包会生成四个版本的apk文件——localdebug.apk、localrelease.apk、usdebug.apk、usrelease.apk,然后根据不同的环境使用不同的apk文件。这篇博客分享就到这里,谢谢!!! 本文属个人总结博客,如有错误,请指出,万分感谢!!!

目录
相关文章
|
7月前
|
编解码 前端开发 Java
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发三
本文介绍了基于声明式UI范式的图形绘制与动画效果实现方法,涵盖绘制图形、添加动画效果及常见组件说明三部分内容。在绘制图形部分,详细讲解了如何通过Circle组件为食物成分表添加圆形标签,以及使用Path组件结合SVG命令绘制自定义图形(如应用Logo)。动画效果部分则展示了如何利用animateTo实现闪屏动画,包括渐出、放大效果,并设置页面跳转;同时介绍了页面间共享元素转场动画的实现方式。最后,文章列举了声明式开发范式中的各类组件及其功能,帮助开发者快速上手构建复杂交互页面。
280 11
|
11月前
|
数据采集 SQL 人工智能
瓴羊Dataphin:AI驱动的数据治理——千里之行,始于标准 |【瓴羊数据荟】数据MeetUp第三期
数据标准是数据治理的核心抓手,通过梳理数据标准可以有效提升数据质量。瓴羊Dataphin平台利用AI技术简化数据治理流程,实现自动化的数据标准建立、质量规则构建和特征识别,助力企业在大模型时代高效治理数据,推动数据真正为业务服务。
905 28
瓴羊Dataphin:AI驱动的数据治理——千里之行,始于标准 |【瓴羊数据荟】数据MeetUp第三期
|
消息中间件 存储 负载均衡
|
JavaScript 前端开发
Vue中 引入外部字体并使用
Vue中 引入外部字体并使用
1302 0
Vue中 引入外部字体并使用
|
Android开发
Android使用ViewPager做无限轮播,人为滑动时停止
Android使用ViewPager做无限轮播,人为滑动时停止
235 2
|
存储 C语言
【C 言专栏】C 语言中的数据类型详解
【4月更文挑战第30天】本文介绍了C语言中的核心数据类型,包括整型(short, int, long, long long)、浮点型(float, double)、字符型(char)、指针、数组、结构体、共用体和枚举。理解这些类型的特点和适用场景对于编写高效准确的C语言代码至关重要。选择合适的数据类型并注意转换和运算规则,能避免错误,为编程打下坚实基础。
843 0
|
XML Java API
Android原生TabLayout使用全解析,看这篇就够了
Android原生TabLayout使用全解析,看这篇就够了
2527 0
Android原生TabLayout使用全解析,看这篇就够了
|
存储 Python
数据类型:计算机科学中的基石
在计算机科学中,数据类型是程序设计的基本组成部分,它决定了如何在计算机内存中存储数据,以及如何对这些数据进行操作。不同的数据类型有不同的存储需求、取值范围以及可进行的操作。了解并正确使用数据类型是编写高效、健壮程序的关键。
475 0
|
Android开发
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
927 0
|
XML IDE 开发工具
Jetpack-Compose 学习笔记(一)—— Compose 初探(上)
Jetpack-Compose 学习笔记(一)—— Compose 初探(上)
227 0