gradle配置

简介: gradle配置

每一个applicationId唯一标识了一个应用,它的值就是进程名


应用双开,只要把applicationId改一下名字即可,系统就会生成一个新的进程但是里面的代码和原有的代码完全一样!


packageName:被代码(如资源文件R.java)或Manifest清单中声明(如类的包路径和packageName相同时,activity的name缩写为”.xxxActivity“)使用。


当applicationId不存在时,packageName默认为applicationId。


当applicationId存在时,packageName仅有其本身的功能,而applicationId将作为唯一标识


1.新建 config/config.gradle

ext {
    // app 相关版本控制
    isLibray = false
    versions = [
            minSdkVersion    : 29,
            targetSdkVersion : 29,
 
            compileSdkVersion: 29,
            buildToolsVersion: "29.0.3",
 
            versionCode      : 30001,
            versionName      : "3.0.1",
            apkName          : "aaa",
            applicationId    : "com.example.aaa"
    ]
}

2.在项目 build.gradle中引入 config/config.gradle

apply from: 'config/config.gradle'

3.在 app build.gradle中使用 config/config.gradle定义的内容

android {
    def versions = rootProject.ext.versions
    compileSdkVersion versions.compileSdkVersion
    buildToolsVersion versions.buildToolsVersion
    defaultConfig {
        manifestPlaceholders = [apkName : versions.apkName] 指定apkName
        applicationId versions.applicationId 指定applicationId
        minSdkVersion versions.minSdkVersion
        targetSdkVersion versions.targetSdkVersion
        versionCode versions.versionCode
        versionName versions.versionName
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
}

在 AndroidManifest中使用apkName

<application
        android:name=".Application"
        android:allowBackup="true"
        android:label="${apkName}"> 使用build.gradle定义的 apkName

4.定义输出apk的文件名格式 在build.gradle android标签下

    android.applicationVariants.all {
        variant ->
            variant.outputs.all {
                outputFileName  = rootProject.getName()+"_" + productFlavors[0].name+"_" + buildType.name + "_v" + defaultConfig.versionName + "-${releaseTime()}.apk"
            }
    }
def gitShortVersion = 'git rev-parse --short HEAD'
 
def releaseTime() {
    return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))
}
applicationVariants.all { variant ->
        variant.getPackageApplicationProvider().get().outputScope.apkDatas.forEach { apkData ->
            apkData.outputFileName = versions.apkName + "_" +
                    variant.versionName + "_" +
                    gitShortVersion.execute().text.trim() + "_" +
                    releaseTime() + "_" +
                    variant.buildType.name + ".apk"
        }
    }

5.gradle文件中输出 变量值 使用println()即可

6.在gradle文件中读取gradle.properties的属性值

定义属性:

isModule=false

读取:在Module 的build.gradle 中

isModule.toBoolean() 或者 直接取isModule就可以了

7.在gradle文件中读取local.properties

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
def sdkDir = properties.getProperty('sdk.dir')
def ndkDir = properties.getProperty('ndk.dir')

8.在java代码中读取gradle.propeties 或者 build.gradle的属性

在build.gradle文件中的android 下的 defaultConfig中定义如下:String要加转意符  Boolean不需要,

其中,buildConfigField定义的方式是

buildConfigField  类型,变量名,值

android {
    namespace 'com.example.overlay.playerstatus'
    compileSdk 32
    def cfgs = rootProject.ext.cfgs
    def MYNAME = "xiaowang"
    def isgirl = true
    defaultConfig {
        applicationId "com.example.overlay.playerstatus"
        minSdk 29
        targetSdk 32
        versionCode versionCode
        versionName "1.0"
        buildConfigField "String", "name", "\"${MYNAME}\""
        buildConfigField "Boolean", "isgirl", "${isgirl}"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
}

在代码中引用

BuildConfig.name

8.在resouce里使用gradle里的配置项,读取gradle.propeties 或者 build.gradle的属性

resValue定义的方式是

resValue XML中的类型,变量名,值

    defaultConfig {
        applicationId "com.xxx.autotest.all"
        minSdkVersion 22
        targetSdkVersion 32
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        //BEGIN. ADDED FOR JNI IMPLEMENT.
        externalNativeBuild {
            cmake {
                cppFlags ""
            }
        }
        ndk {
            abiFilters "armeabi-v7a"
            moduleName "serial_port"  // 生成so的名称
            ldLibs "log", "z", "m", "jnigraphics", "android"
        }
        buildConfigField "String","mFlashSize","\"${mFlashSize}\""
        buildConfigField "String","mDdrSize","\"${mDdrSize}\""
        resValue "string","wang","${wang}"
        //FINISH. ADDED FOR JNI IMPLEMENT.
    }

在布局文件中引用字符串资源

App里如何获取gradle里的配置信息? - 简书 (jianshu.com)


目录
相关文章
|
4天前
|
Java Linux iOS开发
Linux下安装并配置Gradle
Linux下安装并配置Gradle
173 0
|
4天前
|
缓存 Java 开发工具
【开发工具】Gradle的安装 与 配置环境变量
【开发工具】Gradle的安装 与 配置环境变量
109 0
|
7月前
|
Java Linux Shell
Gradle下载和配置教程:Windows、Mac和Linux系统安装指南
Gradle下载和配置教程:Windows、Mac和Linux系统安装指南
514 0
|
XML IDE Java
Android gradle.properties 基础使用和常规配置
Gradle 是一个开源构建自动化工具,其设计足够灵活,可以构建几乎任何类型的软件。
|
XML Java Apache
Gradle安装与配置
Gradle安装与配置
Gradle安装与配置
|
4天前
|
Java Maven Spring
gradle 配置指南
配置Gradle指南:在`build.gradle`中添加仓库,如阿里云公共库`maven { url &#39;https://maven.aliyun.com/repository/public/&#39; }`和Spring库`maven { url &#39;https://maven.aliyun.com/repository/spring/&#39; }`。然后声明依赖`dependencies { compile &#39;[GROUP_ID]:[ARTIFACT_ID]:[VERSION]&#39; }`,最后运行`gradle dependencies`或`./gradlew
|
4天前
|
Java Maven Spring
gradle 配置指南
在`build.gradle`中配置Gradle仓库,首先添加阿里云公共仓库
|
4天前
|
开发工具 Android开发 开发者
Android 项目编译 Gradle 配置说明
Android 项目编译 Gradle 配置说明
167 0
|
4天前
|
IDE Java Maven
Maven或Gradle:构建工具的使用和配置等知识讲解梳理
Maven或Gradle:构建工具的使用和配置等知识讲解梳理
101 1
|
6月前
|
Java Maven Android开发
android之gradle配置仓库与引入依赖
android之gradle配置仓库与引入依赖
293 0