Android 組件化最佳實踐之 AucFrame 讓你的 Gradle 更智能

前言

不瞭解什麼是 AucFrame 的能夠先看一下這篇文章:AucFrame 之簡介及學習java

環境

首先來明確下開發環境,這裏推薦使用 Android Studio 3.5-Beta4 及以上的版本,3.3.x 和 3.4.x 也都是能夠的,只是沒有智能提示,3.2.x 及如下版本的話就不推薦使用了,不然後面的課程可能會出問題。android

背景

若是你開發過稍微大型點的項目,項目中確定會存有多個 module,那麼多個 gradle 的管理便成了問題,曾經我也分享過 Android 開發之版本統一規範 這樣的 ext 管理方式,但在 gradle 中沒有智能提示,也不能跳轉到這些變量,侷限性過高是個硬傷,那麼如今有更好的解決方案嗎?答案是確定的,就是利用 buildSrc 來更好地管理 Gradle。git

解決方案

首先聲明下,該方式在 AS 的 3.3.x 版本以及 3.4.x 版本是不能提供智能提示,推薦使用 3.5-Beta4 及以上的版本,相關 bug 地址傳送門:issuetracker.google.com/issues/1230… bug 這裏能夠看出 AS 團隊也是同意使用的,最新的 3.5 正式版相信立刻就會到來了,我現在使用的版本是 3.5-Beta5 版本,一切如斯順暢,效果圖以下所示:github

提示效果圖

那麼具體怎麼操做呢,如今來揭曉其真面目,寫過插件的確定知道 buildSrc 這個目錄,這個目錄存在於項目根目錄下,例如我這裏就是 AucFrameTemplate/buildSrc,提醒一下,這個是要本身建立的哦,它默認是直接會參與編譯,因此不用加入到 setting.gradle 中,具體以下圖所示:微信

buildSrc

下面咱們本身來創建它,首先是 .gitignore,這個文件沒什麼好說的,內容就是 /buildapp

build.gradle 文件以下所示:框架

repositories {
    google()
    jcenter()
}

apply {
    plugin 'groovy'
    plugin 'java-gradle-plugin'
}

dependencies {
    implementation gradleApi()
    implementation localGroovy()
    implementation "commons-io:commons-io:2.6"
}
複製代碼

加完這兩文件後 sync 下項目後即可以看到 buildSrc 目錄下生成了 buildSrc.iml,這就表明 buildSrc 已經參與到項目編譯中了。學習

接下來咱們在 buildSrc/src/main/groovy 中建立 Config.groovy 文件,向其中寫入以下內容(根據項目本身修改):gradle

class Config {

    static applicationId = 'com.blankj.aucframe'            // TODO: MODIFY
    static appName = 'AucFrame'                             // TODO: MODIFY

    static compileSdkVersion = 27                           // TODO: MODIFY
    static minSdkVersion = 21                               // TODO: MODIFY
    static targetSdkVersion = 27                            // TODO: MODIFY
    static versionCode = 1_000_000                          // TODO: MODIFY
    static versionName = '1.0.0'// E.g. 1.9.72 => 1,009,072 // TODO: MODIFY
}
複製代碼

寫完後咱們再同步一下項目,如今你能夠跳轉到 app 中的 build.gradle 中,設置你所須要設置的屬性便可,可設置成以下所示:ui

android {
    compileSdkVersion Config.compileSdkVersion
    defaultConfig {
        minSdkVersion Config.minSdkVersion
        versionCode Config.versionCode
        versionName Config.versionName
        applicationId Config.applicationId
        targetSdkVersion Config.targetSdkVersion
    }
}
複製代碼

你會發如今輸入過程當中是支持智能提示的,也能夠支持跳轉,如上只是基本的操做,愣着幹嗎啊,趕忙扣 6 吧,接下來咱們作更刺激的操做。

打個小廣告

歡迎加入個人知識星球「基你太美」,我會在星球中分享 AucFrame 框架、大廠面經、AndroidUtilCode 更詳盡的說明...一切我所瞭解的知識,你能夠經過支付進入個人星球「基你太美」進行體驗,加入後優先觀看星球中精華的部分,若是以爲星球的內容對自身沒有收益,你能夠自行申請退款退出星球,也不必加我好友;若是你已肯定要留在個人星球,能夠經過掃描以下二維碼(備註:基你太美+你的星球暱稱)加我我的微信,方便我後續拉你進羣(PS:進得越早價格越便宜)。

個人二維碼
相關文章
相關標籤/搜索