一、概述
对于 Android 开发版本的统一涉及到的东西就是 Gradle 中的全局设置,我们通过配置 gradle 也就是编写 Groovy 代码将开发中的版本号设置为全局参数。这样就能够在 module 或者 library 中访问同一份版本号,从而实现统一。Gradle 中的全局设置方式有以下几种:
- 工程 build.gradle
- ext方法
- gradle.properties文件
- -p参数
二、全局设置
1. 工程 build.gradle
allprojects { apply plugin: ‘com.android.application‘ android { compileSdkVersion 22 buildToolsVersion "22.0.1" } }
这只会在你的所有模块都是Android app应用的时候有效。你需要添加Android 插件才能访问Android的tasks。
2. ext 方法
ext { compileSdkVersion = 22 buildToolsVersion = "22.0.1" }
在全局的gradle文件中定义一些属性,然后再在子模块中就可以使用这些属性。
android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion }
3. gradle.properties 文件
COMPILE_SDK_VERSION = 22 BUILD_TOOLS_VERSION = "22.0.1"
在该文件中定义后,可以在子模块中直接使用:
android { compileSdkVersion COMPILE_SDK_VERSION buildToolsVersion BUILD_TOOLS_VERSION}
4. -p参数
这种方式是命令行的方式,比如我们在 gradle 中定义这么一个任务:
task printProperties << { if (project.hasProperty(‘cmd‘)) { println cmd // Command line property } }
然后我们通过命令行设置参数:
$ gradlew printProperties -Pcmd=‘Hello from the command line‘
执行任务后输出:
Hello from the command line
三、版本统一
进入主题,我们来看如何将我们同一份版本进行共享来实现统一。我们先创建一个放置版本号的 gradle 文件 version.gradle
然后我们就通过 ext 方式定义:
ext.deps = [:]//空映射 def versions = [:]versions.support = "27.1.1"versions.constraint_layout = "1.0.2"versions.junit = "4.12"versions.test_runner = "1.0.2"versions.test_espresso = "3.0.2"versions.android_gradle_plugin = "3.1.2" def deps = [:] def support = [:]support.v7 = "com.android.support:appcompat-v7:$versions.support"deps.support = support //viewdeps.constraint_layout = "com.android.support.constraint:constraint-layout:$versions.constraint_layout"deps.android_gradle_plugin = "com.android.tools.build:gradle:$versions.android_gradle_plugin" def test = [:]test.junit = "junit:junit:$versions.junit"test.runner = "com.android.support.test:runner:$versions.test_runner"test.test_espresso = "com.android.support.test.espresso:espresso-core:$versions.test_espresso"deps.test = test ext.deps = deps def build_version = [:]build_version.min_sdk = 15build_version.target_sdk = 27build_version.build_tools = "27.1.1"ext.build_version = build_version
def addRepos(RepositoryHandler handler) { handler.google() handler.jcenter() handler.mavenCentral() //Add the JitPack repository handler.maven { url "https://jitpack.io" } handler.maven{ url ‘http://maven.aliyun.com/nexus/content/groups/public/‘}}ext.addRepos = this.&addRepos
上面这就定义好了我们的版本,书写方式就是 Groovy 代码。下面就是我们要将 version.gradle 文件应用到项目来:
apply from
:表示引用其他的配置文件
// 项目 build.gradlebuildscript { apply from : "version.gradle" }
Sync Project 后,我们就可以使用了,来看一下在子模块中的使用:
apply plugin: ‘com.android.application‘ android { compileSdkVersion build_version.target_sdk defaultConfig { applicationId "com.sl.gradledemo" minSdkVersion build_version.min_sdk targetSdkVersion build_version.target_sdk versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } signingConfigs { release { storeFile file(RELEASE_STORE_FILE) storePassword RELEASE_STORE_PASSWORD keyAlias RELEASE_KEY_ALIAS keyPassword RELEASE_KEY_PASSWORD } } buildTypes { release { minifyEnabled false signingConfig signingConfigs.release proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘ buildConfigField("String", "API_URL", "\"https://www.baidu.com\"") buildConfigField("boolean", "LOG_STATE", "false") resValue("string","show_name","release_app") resValue("string","app_name","release_app") } debug { buildConfigField("String", "API_URL", "\"http://192.168.142.30\"") buildConfigField("boolean", "LOG_STATE", "true") resValue("string","show_name","debug_app") resValue("string","app_name","dubug_app") } }} dependencies { implementation fileTree(dir: ‘libs‘, include: [‘*.jar‘]) implementation deps.support.v7 implementation deps.constraint_layout testImplementation deps.test.junit androidTestImplementation deps.test.runner androidTestImplementation deps.test.test_espresso}
这样我们所有子模块就可以和上面一样配置版本,只有 version.gradle 中定义了版本。这样我们需要更新版本的时候是不是方便了许多。
原文地址:https://www.cnblogs.com/aimqqroad-13/p/9019865.html
时间: 2024-11-05 23:30:44