Android 如何使用gradle.properties

Android gradle.properties 基础使用和常规配置 1.什么是Gradle?Gradle 是一个开源构建自动化工具,其设计足够灵活,可以构建几乎任何类型的软件。 2.什么是gradle.properties? 在Android中, 1.在使用Android Studio新建Android项目之后,在项目根目录下会默认生成一个gradle.properties文件,它是由IDE自动生成的gradle.properties文件。 2.他是项目级别的Gradle配置文件,gradle.properties里面定义的属性是全局的,可以在各个模块的build. 阅读详情

build.gradle使用gradle.properties配置相关信息

  • 首先build.gradle有哪些常见的参数可以应用到gradle.properties呢?
    以最常见举例:applicationId,versionCode,versionName
    在gradle.properties中代码
APPLICATION_ID=com.example.multi
VERSION_CODE=2
VERSION_NAME=1.1

然后在build.gradle中直接引用即可

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId APPLICATION_ID
        minSdkVersion 17
        targetSdkVersion 28
        versionCode VERSION_CODE as int
        versionName VERSION_NAME
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

ok,就这么简单。通过代码动态获取packageName,versionName,versionCode很简单就不用多说了。

  • 除了直接引用,build.gradle还有哪些引用方式呢?
    没错,还有一种就是buildConfigField自定义配置变量
    同样的,首先把需要配置的参数写到gradle.properties中
APPLICATION_ID=com.example.multi
VERSION_CODE=2
VERSION_NAME=1.1

# 应用base_url
BASE_API="http://my-api.test.com/"
# 渠道
CHANNEL="xiaomi"
# log开关
LOG_SWITCH=true

然后,在build.gradle中去自定义这些配置

defaultConfig {
        applicationId APPLICATION_ID
        minSdkVersion 17
        targetSdkVersion 28
        versionCode VERSION_CODE as int
        versionName VERSION_NAME

        // 通过buildConfigField自定义配置信息
        buildConfigField("String", "BASE_API", "${BASE_API}")
        buildConfigField("String", "CHANNEL", "${CHANNEL}")
        buildConfigField("boolean", "LOG_SWITCH", "${LOG_SWITCH}")
    }

好了,现在可以尽情的在代码中使用这些配置了

String url = BuildConfig.BASE_API;
String channel = BuildConfig.CHANNEL;
boolean logSwitch = BuildConfig.LOG_SWITCH;

这个时候我们可能想到了,既然gradle.properties中的配置信息可以在build.gradle中运用,那是否可以在AndroidManifest.xml中引用呢?答案是肯定的。

  • gradle.properties在AndroidManifest.xml中的使用
    首先要知道在AndroidManifest.xml中有哪些常见的需要配置的信息。
    比较常见的有appName,channel,其他的信息这里不做介绍,请自行补充。
    同样的,gradle.properties中配置
# 渠道
CHANNEL="xiaomi"
# app名字
APP_NAME=配置demo

然后需要在build.gradle中进行声明

defaultConfig {
        // 在清单文件中需要引用的参数
        manifestPlaceholders = [
                APP_NAME      : APP_NAME,
                CHANNEL       : CHANNEL]
}

之后就是在AndroidManifest.xml中引用

 <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="${APP_NAME}"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <meta-data android:name="CHANNEL"
            android:value="${CHANNEL}"/>

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
</application>

最后,在Java代码中使用

ApplicationInfo appInfo = this.getPackageManager()
                    .getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
String channel = appInfo.metaData.getString("CHANNEL");
  • 说道这里我们可能会奇怪,这些信息配置在gradle.properties中有什么意义呢?直接写到代码里不也一样的效果吗,反正发布之后不能修改了?对,没错哈哈。

但是测试阶段呢,每个环境(测试、预生产、生产)以及bug开启的、关闭的,不同渠道的,甚至不同应用包名、应用名字的、不同版本号的包。要疯?这么多种情况一个一个打吗?
一般公司都有自己的beta服务器,有的公司是使用Jenkins自定义多渠道打包的,这个时候就派上用场了,只需要通过脚本(当然脚本会的话可以自己写)在打包的的时候动态修改gradle.properties配置即可,随便测试人员拿去玩了。

最后附上相关文件的代码
gradle.properties中

# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true

APPLICATION_ID=com.example.multi
VERSION_CODE=2
VERSION_NAME=1.1

# 应用base_url
BASE_API="http://my-api.test.com/"
# log开关
LOG_SWITCH=true
# 渠道
CHANNEL="xiaomi"
# app名字
APP_NAME=配置demo

build.gradle中

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId APPLICATION_ID
        minSdkVersion 17
        targetSdkVersion 28
        versionCode VERSION_CODE as int
        versionName VERSION_NAME

        // 通过buildConfigField自定义配置信息
        buildConfigField("String", "BASE_API", "${BASE_API}")
        buildConfigField("String", "CHANNEL", "${CHANNEL}")
        buildConfigField("boolean", "LOG_SWITCH", "${LOG_SWITCH}")

        // 在清单文件中需要引用的参数
        manifestPlaceholders = [
                APP_NAME      : APP_NAME,
                CHANNEL       : CHANNEL]
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.multi_channel">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="${APP_NAME}"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <meta-data android:name="CHANNEL"
            android:value="${CHANNEL}"/>

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
Android Studio3.0利用gradle.properties添加模块依赖 首先,我们需要有创建模块,如果是直接创建library模块或者从外部导入的话,直接添加依赖便可, 如果是先创建了可单独运行的模块的话,要怎么改成可依赖的模块呢? 假如 模块A 要将原本可独立运行的 模块B 添加为依赖,步骤如下:(gradle.properties的使用在文章最后说明) 1.将模块B的 build.gradle 打开,将 apply plugin: ‘com.android.app... 阅读详情

相关推荐

Fastwhisper + Pyannote 实现 ASR + 说话者识别

最近在研究ASR相关的业务,也是调研了不少模型,踩了不少坑,ASR这块,目前中文普通话效果最好的应该是阿里的modelscope上的中文模型了,英文的话,还是非whisper莫属了,而且whisper很变态,粤语效果也还不错,因此,如果实际业务中需要涉及到不同的语言,还是更推荐whisper多一点faster-whisper是使用CTranslate2对OpenAI的Whisper模型的重新实现,CTranslate2是一个用于Transformer模型的快速推理引擎。

qq_44193969的博客 1万+

Android中清单文件引入配置参数,Android 使用gradle打包的各种配置

原标题:Android 使用gradle打包的各种配置在AS中利用gradle打包,可以高效并且自由地配置各种参数,发布不同的版本。关于配置gradle文件的一些做法,总结为如下。一.替换AndroidManifest中的占位符举个例子,在AndroidManifest文件中,我们将极光推送的key值指定为一个占位符在build.gradle文件中,这里介绍3种方法去替换该占位符1.接收gradl...

weixin_36289292的博客 1283

从FOC到你的无人机:深入浅出讲透Clark/Park变换在无刷电机控制中的核心作用

本文深入解析Clark变换与Park变换在无刷电机控制中的核心作用,揭示其如何将三相交流电转换为旋转坐标系下的直流量,实现无人机电机的高效精准控制。通过STM32硬件加速和工程实践案例,展示这对数学变换如何成为FOC算法的神经中枢,大幅提升系统响应速度和能效表现。

weixin_42628941的博客 168

【Android Gradle 插件】gradle.properties 中配置编译参数并在 Java 代码 BuildConfig 中调用该参数

一、gradle.properties 中配置编译参数、 二、在 build.gradle 中配置 BuildConfig.java 生成信息、 三、编译后生成的 BuildConfig 类

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 4660

Educoder | 计算机网络实验-IP协议分析

本关任务:使用 Ping 命令发送数据报,用 Wireshark 截获数据报,分析 IP 数据报的格式,理解 IPV4 地址的编址方法,加深对 IP 协议的理解。

Mksg_28的博客 4753

Autojs实战教程---番茄免费小说Apk文件和源码

邀请码:782383363 字节跳到的App,推荐给大家,还是值得用一用的。不废话直接代码。 代码是带UI的复制后可以直接使用。 "ui"; //#region UI var rootUrl = "http://114.115.220.1:91";//各位大神小弟自己的服务器别黑谢谢 var storaySign = "FanqieXiaoShuo0412326@163.com"; var woolStorage = storages.create(storaySign);//创建本地存储 var

zy0412326的专栏 2万+

如何获取Android project下 build.gradle、gradle.properties、local.properties文件中定义的属性或变量

1、读取project下 build.gradle 属性: ext { compileSdk = 28 minSdk = 17 targetSdk = 28 support = "28.0.0" buildTools = "28.0.0" supportLibraryVersion = "28.0.0" versionCode = 4 ...

安卓开发-顺 的博客 1万+

NCCL 源码深度解析:从初始化到通信链路构建全流程

本文深入解析了NVIDIA Collective Communication Library (NCCL) 的核心工作机制,从通信组初始化、硬件拓扑发现,到P2P、共享内存及网络传输链路的构建。详细剖析了源码中集合通信任务的执行流程与Proxy线程的协同机制,为开发者进行高性能分布式训练的性能调优与深度问题排查提供了清晰的底层视角。

hp777的博客 551

gradle配置

android {manifestPlaceholders = [apkName : versions.apkName] 指定apkNameapplicationId versions.applicationId 指定applicationId在 AndroidManifest中使用apkNameandroid:label="${apkName}"> 使用build.gradle定义的 apkName。

xiaowang_lj的博客 1021

MIT-BEVFusion系列六--bevfusion网络部分流程理解

简述bevfusion网络部分

duanmushuangquan的博客 4892

基于Python的雪球网投资组合数据爬取与分析实战:从入门到精通

在当今数字化投资时代,数据已成为投资者最重要的资产之一。雪球网作为中国领先的投资社交平台,汇聚了大量优质的投资组合数据,这些数据对于量化投资研究和个人投资决策具有重要价值。本文将详细介绍如何使用Python最新技术栈构建一个高效、稳定的雪球网投资组合爬虫,并深入分析获取的数据。投资组合持仓明细及变动历史投资收益率曲线与风险指标投资者操作策略与调仓频率热门行业与个股关注度。

2201_76125261的博客 920

Android build.gradle/gradle.properties 相关使用

一、build.gradle 1.可以使用同级或上级目录下*.properties(一般都是在gradle.properties)中所有参数 2.路径表示方式: file:/// 表示的是完整路径, rootDir表示项目根目录,MAVEN_UPLOAD_REPO_URL是常量地址,自己配置在.properties中 de...

lhy24680的博客 3277

ArcMap|时空地理加权回归(GTWR)

ArcGIS的GTWR插件下载地址:https://www.researchgate.net/publication/329518786_GTWR_ADDIN_Valid_till_Dec_31_2022 更详细的操作参考: https://www.bilibili.com/video/BV1fR4y1M7xB?spm_id_from=333.999.0.0 https://blog.csdn.net/weixin_40008135/article/details/112693520 双击“GTWR_Be

个人学习笔记 1万+

Android stuido工程中的gradle-wrapper.properties的作用

是项目Gradle环境的锁定文件,保证构建环境统一、可重现,是跨平台和团队协作构建的基础。

shiruiyiruo的博客 1274

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android Studio Gradle 配置 gradle-wrapper.properties

系统变量 -> 新建 “GRADLE_HOME”,填写F:\Tools\Gradle\gradle-8.7。经常出现gradle 工具下载fail的问题,期望还是本地能统一管理。gradle-wrapper.properties 文件。在android studio中,在官网下载版本到本地,

。 1633

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

android清除代理:在这里gradle.properties

android清除代理:在这里gradle.properties。

weixin_65017041的博客 193

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Android中gradle.properties 和 gradle-wrapper.properties 作用

我们更深入地了解这两个文件的作用和它们可以包含的一些常见配置。

浅墨的博客 1513

android gradle.properties

gradle.properties 里面配置的东西,在gradle 文件里面可以直接引用。例如: 在你工程根目录的gradle.properties 文件里面 可以这样配置:## Project-wide Gradle settings. # # For more details on how to configure your build environment visit # http://

男儿不展风云志,空有天生八尺躯 1432

插件properties_Android gradle插件与gradle 版本

Android 构建工具是依托于gradle完成。 搞清楚 gradle插件版本和gradle版本的区别以及关系 1、gradle-wrapper.properties 文件 distributionUrl所指定的是gradle 版本 distributionUrl=https://services.gradle.org/distributions/gradle-5.4.1-all.zip 2...

weixin_42514709的博客 115

Android Gradle JVM配置文件gradle.properties优先级查找

目录一、Gradle7.5版本 gradle.properties属性优先级1、优先级2、查找注意事项:3、Gradle 7.5版本官网参考链接:《Gradle环境配置》Android 项目根目录下的gradle.properties文件中,可以配置JVM和Gradle属性,但在Gradle安装目录/.gradle/目录下也存在一个gradle.properties文件,在Gradle7.5版本中,gradle.properties文件中的属性配置优先级如下:

he先森的博客 940

【Android Gradle 插件】Gradle 基础配置 ③ ( 生成 Gradle Wrapper 配置 | 分析生成的 gradle-wrapper.properties 配置文件 )

一、生成 Gradle Wrapper 配置、 二、分析生成的 gradle-wrapper.properties 配置文件

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 2884

Android studio项目中的gradle.properties详解

Android studio项目中的gradle.properties详解 在使用Android Studio新建Android项目之后,在项目根目录下会默认生成一个gradle.properties文件,我们可以在里面做一些Gradle文件的全局性的配置,也可以将比较私密的信息放在里面,防止泄露。 下面我们就来分析下IDE自动生成的gradle.properties文件,及其常见的用法。 gra...

tinyVampire的博客 1万+

Android build.gradle读取String中文件及gradle.properties数据

在网上找了好久没有一个完整的学习文档,自己总结下,方便后面使用,话不多说直接上代码。读取gradle.properties。

Android 1228

Android studio项目中的gradle.properties文件作用

一、简介 在使用Android Studio新建Android项目之后,在项目根目录下会默认生成一个gradle.properties文件,该文件是项目级别的Gradle配置文件,我们可以在里面做一些Gradle文件的全局性的配置,也可以将比较私密的信息放在里面,防止泄露。 二、用法 1、在各个模块的build.gradle里面直接引用 gradle.properties里面定义的属性是全局的,可以在各个模块的build.gradle里面直接引用. 在gradle.properties文件中新增下面属性:

分享Android开发知识 1864
上一篇: android最简单的生成二维码demo
下一篇: Android开发使用Gradle实现多渠道打包
coder_yao
博客等级 码龄10年 9粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值