IT技(ji)術(shu)互動交流平jiao)/h4>

智胜彩票官网

來源︰IT165收集(ji)  發布日期︰2020-02-22 04:48:18

讀完本文na)ni)將了解到︰

settinggradle 主目錄下的(de) buildgradle 模(mo)塊下的(de) buildgradle 備注 注意 applicationId 和 package name 其實不是(shi)一個東(dong)西 總結(jie)

shixinzhang

我們用(yong) Android Studio 新創建一個項目時,會自動生(sheng)成 3 個 Gradle 文件︰

shixinzhang

接下來介紹這三個文件的(de)作用(yong)。

智胜彩票官网

上篇文章︰he) 裁me) Gradle 這麼(me)火(huo) 中(zhong)介紹了,

一個 Gradle 構建通(tong)常包括三個階(jie)段︰初(chu)始(shi)化,配置,和執行xiao)/p>

setting.gradle 文件在 初(chu)始(shi)化過程中(zhong)被hui)蔥校 菇ㄆ魍tong)過 setting.gradle 文件中(zhong)的(de)內(na)容了解哪(na)些模(mo)塊將被 build,下面的(de)內(na)容表(biao)明當前項目中(zhong)除(chu)了 app 模(mo)塊還有另外一個叫做 “shixinlibrary” 的(de)依賴de)mo)塊︰

include ‘:app’, ‘:shixinlibrary’

注意︰單模(mo)塊項目不一定需要(yao)有 setting 文件,但一旦有多(duo)個模(mo)塊,必須要(yao)有 setting 文件,同時也(ye)要(yao)寫明所有要(yao)構建的(de)模(mo)塊,否則 gradle 不會 build 不包括的(de)模(mo)塊。

智胜彩票官网

看 gradle 文件中(zhong)的(de)注釋(shi)︰

Top-level build file where you can configuration options common to all sub-projects/modules.

主目錄下的(de) build.gradle 文件是(shi)最頂層(ceng)的(de)構建文件,這里配置所有模(mo)塊通(tong)用(yong)的(de)配置信息。

默認的(de)頂層(ceng) build.gradle 文件中(zhong)包括兩個代碼塊 (buildscript 和 allprojects):

shixinzhang

buildscript
從(cong)yong)志jiu)可以看出來,buildscript 是(shi)所有項目的(de)構建腳本配置,主要(yao)包括依賴的(de)倉庫和依賴的(de) gradle 版本。

上圖中(zhong) repositories 代碼塊將 jcenter 配置為一個倉庫,JCenter 是(shi)一個很有名(ming)的(de) Maven 倉庫。確定了依賴的(de)倉庫後,我們就(jiu)可以在 dependencies 代碼塊中(zhong)添(tian)加依賴的(de)、在 jcenter 倉庫中(zhong)的(de)包了。

dependencies 代碼塊用(yong)于配置構建過程中(zhong)的(de)依賴包,注意,這里是(shi)用(yong)于構建過程,因此(ci)你(ni)不能講(jiang)你(ni)的(de)應用(yong)模(mo)塊中(zhong)需要(yao)依賴的(de)庫添(tian)加到這里。

默認情(qing)況下唯一被用(yong)于構建過程中(zhong)的(de)依賴包是(shi) Gradle for Android 的(de)插(cha)件。我們還可以添(tian)加一些其他用(yong)于構建的(de)插(cha)件,比如(ru) retrolambda, apt, freeline 等等。

allprojects
allprojects 代碼塊用(yong)來聲明將被用(yong)于所有模(mo)塊的(de)屬(shu)性(xing),注意是(shi)所有模(mo)塊。常見的(de)就(jiu)是(shi)配置倉庫地址(zhi)(jcenter, 自定義 maven 倉庫等),你(ni)還可以在 allprojects 中(zhong)創建 tasks,這些 tasks 最終會運(yun)用(yong)到所有模(mo)塊中(zhong),

官方建議盡量少添(tian)加用(yong)于所有模(mo)塊的(de)屬(shu)性(xing),因為這意味著強耦(ou)合,一旦沒有構建主項目,你(ni)的(de)子模(mo)塊很有可能因為缺少所有模(mo)塊的(de)屬(shu)性(xing)導致(zhi)構建失敗。

智胜彩票官网

模(mo)塊下的(de) build.gradle 文件只應用(yong)于當前模(mo)塊,你(ni)可以覆(fu)蓋(gai)主目錄下的(de) build.gradle 的(de)內(na)容。

以我的(de)練習(xi)項目為例介紹︰
shixinzhang

上圖中(zhong)主要(yao)分(fen)三個模(mo)塊︰apply plugin , android, dependencies。

apply plugin
apply plugin 聲明了接下來要(yao)用(yong)到哪(na)些插(cha)件的(de)內(na)容,上圖表(biao)明使用(yong)了 androd 插(cha)件,這里之所以能用(yong) android 插(cha)件,是(shi)因為主目錄中(zhong)聲明了 Gradle for Android 的(de)依賴,這里才(cai)能使用(yong)。

因此(ci)shuo)蔽頤切枰yao)使用(yong)其他插(cha)件,比如(ru) retrolambda 時,首(shou)先需要(yao)在主目錄 build.gradle 文件中(zhong)添(tian)加依賴,然後在模(mo)塊 build.gradle 中(zhong)聲明使用(yong) retrolambda 插(cha)件。

備注︰默認的(de) android 插(cha)件是(shi)由 Google 官方維護的(de)mo)  頤翹 ├斯菇  饈shi)、打(da)包 Android 應用(yong)的(de)能力。除(chu)此(ci)之外我們還可以自定義插(cha)件。在逐漸(jian)加深對 Gradle 的(de)了解後,我們將嘗試(shi)自己(ji)寫個 Gradle 插(cha)件。

android
在聲明了 android 插(cha)件後,我們就(jiu)可以使用(yong) android 插(cha)件提供的(de)內(na)容進行構建配置。

android 構建配置中(zhong)必須要(yao)有的(de)是(shi)兩個版本︰

compileSdkVersion : 編(bian)譯應用(yong)的(de) Android API 版本 buildToolsVersion : 構建工具版本
構建工具包括 aapt, zipalign, renderscript 等 用(yong)于在打(da)包時生(sheng)成各(ge)種中(zhong)間(jian)產物,可以從(cong) SDK Manager 中(zhong)下載構建工具

defaultConfig 代碼塊用(yong)于配置應用(yong)的(de)默認屬(shu)性(xing),可以覆(fu)蓋(gai) AndroidManifest.xml 中(zhong)的(de)屬(shu)性(xing),比如(ru)︰

applicationId : 覆(fu)蓋(gai)了 AndroidManifest 中(zhong)的(de) package name minSdkVersion : 覆(fu)蓋(gai)了 AndroidManifest 中(zhong)的(de)屬(shu)性(xing),配置運(yun)行應用(yong)的(de)最小(xiao) API targetSdkVersion : 一樣,用(yong)于通(tong)知(zhi)系統當前應用(yong)已經被這個版本測試(shi)過,和之前的(de) compileSdkVersion 沒有關(guan)系 versionCode : 一樣,應用(yong)的(de)版本號(hao) versionName : 版本名(ming)稱(chen)

defaultConfig 還可以添(tian)加簽名(ming),佔位符(fu)等等,這里只列這些。

buildTypes 用(yong)來定義如(ru)何(he)構建和打(da)包不同類型的(de)應用(yong),常見的(de)就(jiu)是(shi)測試(shi)和生(sheng)產。具體內(na)容後序介紹。

android 中(zhong)還可以配置其他信息,比如(ru) 簽名(ming)、渠道等,你(ni)可以在 Project Structure 面板中(zhong)直觀的(de)查看,添(tian)加,也(ye)可以使用(yong)代碼添(tian)加,這些內(na)容我們後續詳細介紹︰
shixinzhang

dependencies
上圖中(zhong)可以看到 依賴配置 在 android 代碼塊的(de)外邊,事實上依賴配置是(shi) Gradle 配置的(de)基礎功(gong)能,也(ye)就(jiu)是(shi)說(shuo)除(chu)了 Android,其他類型的(de)項目(比如(ru) JavaEE )也(ye)可以這麼(me)用(yong)。

我們可以在依賴配置中(zhong),添(tian)加要(yao)使用(yong)的(de)庫,當然也(ye)可以添(tian)加本地的(de) jar 包。具體依賴配置內(na)容我們後續深入介紹。

備注

注意︰ applicationId 和 package name 其實不是(shi)一個東(dong)西。

在使用(yong) Gradle 構建以前,package name 其實有兩個作用(yong)︰

在 R 文件中(zhong)用(yong)作報名(ming) 應用(yong)的(de)唯一標(biao)示

我們知(zhi)道,一個安卓手機上相同包名(ming)的(de) app 只能有一個。但是(shi)當我們想要(yao)同時安裝(zhuang)一個應用(yong)的(de)不同的(de)版本,比如(ru)一hui)植饈shi)一hui)稚sheng)產,這時,就(jiu)需要(yao)修改 package name 了,但是(shi)資shi)創牒R 文件要(yao)求使用(yong)的(de)包名(ming)不能改變(bian),否則你(ni)的(de)所有xing)次募薊崴孀毆菇 奼徑謀bian)。怎麼(me)辦呢?

Gradle 出現後,Android 工具團隊解耦(ou)了 package name 的(de)兩種不同用(yong)法(fa),提出了 applicationId 的(de)概念︰

定義在 Manifest 文件中(zhong)的(de) package,繼續用(yong)于源代碼和 R 文件的(de)標(biao)示 而 applicationId 則用(yong)作設備和 Google Play 的(de)唯一標(biao)識

也(ye)就(jiu)是(shi)說(shuo) applicationId 覆(fu)蓋(gai)了 package name 的(de)一部分(fen)職責(ze)。

總結(jie)

這篇文章概覽了一個 Android 項目中(zhong)的(de) Gradle 文件作用(yong)及(ji)內(na)容,引申出許多(duo)細節,比如(ru) 自定義構建、依賴管理、多(duo)種類型構建的(de)配置等等。接下來我們將深入學習(xi)這些內(na)容。

Tag標(biao)簽︰文件  
  • 智胜彩票官网

About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責(ze)條款 - 網(wang)站地圖 - 網(wang)友投稿 - 聯系方式
本站內(na)容來自于互聯網(wang),僅供用(yong)于網(wang)絡技(ji)術(shu)學習(xi),學習(xi)中(zhong)請遵循相關(guan)法(fa)律(lv)法(fa)規
智胜彩票官网 | 下一页