Android 開發版本統一

來源:互聯網
上載者:User

標籤:rom   view   rar   nta   syn   roi   OLE   mod   tools   

一、概述

  對於 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

//view
deps.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 = 15
build_version.target_sdk = 27
build_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.gradle
buildscript { 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 中定義了版本。這樣我們需要更新版本的時候是不是方便了許多。

 

Android 開發版本統一

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.