第一行代碼筆記(2)

Andriod studio 采用Gradle來構(gòu)建項(xiàng)目

image.png

一般一個(gè)項(xiàng)目有兩個(gè)build.gradle,一個(gè)在最外層目錄下,一個(gè)在app目錄下面:


image.png
buildscript {
    
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
        

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

這些代碼都是自動(dòng)生成,請(qǐng)忽略語(yǔ)法結(jié)構(gòu),只需看最關(guān)鍵的部分:
1.兩處repositories的閉包都聲明了jcenter()這一行,jcenter()是一個(gè)代碼托管倉(cāng)庫(kù),很多安卓開源項(xiàng)目都會(huì)選擇將代碼托管到j(luò)center上,聲明了他之后,就可以在此項(xiàng)目中引用jcenter中的任何開源項(xiàng)目了,
2.dependencies閉包中使用classpath聲明了一個(gè)gradle插件,why要有這個(gè)插件,gradle不是專門為構(gòu)建安卓項(xiàng)目而生,java,c++很多項(xiàng)目都可以用它創(chuàng)建,想要用它來構(gòu)建安卓項(xiàng)目,必須用聲明com.android.tools.build:gradle:3.0.0這個(gè)插件,后面部分表示版本號(hào);
這是最外層目錄下的gradle解析一般情況下并不需要修改此文件,除非想添加一些全局性的項(xiàng)目構(gòu)建配置;
下面看一看app下面的build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.example.huyongjin.myapplication"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2'
}

第一行應(yīng)用了一個(gè)插件,有兩種值可以選,com.android.application表示這是一個(gè)應(yīng)用程序模塊磷醋,com.android.library表示這是一個(gè)庫(kù)模塊;這兩者的區(qū)別在于:前者可以直接運(yùn)行,后者只能作為代碼庫(kù)依附于別的應(yīng)用程序模塊來運(yùn)行;接著是最大的一個(gè)安卓閉包,在這個(gè)閉包中可以配置項(xiàng)目構(gòu)建的各種屬性:
compileSdkVersion表示指定項(xiàng)目的編譯版本;
//buildToolVersion用于指定項(xiàng)目構(gòu)建工具的版本
androdid閉包中又嵌套了一個(gè)defaultConfig閉包,defaultConfig閉包中可以對(duì)項(xiàng)目的更多細(xì)節(jié)進(jìn)行配置。
applicationId用于指定項(xiàng)目的包名,前面我們?cè)趧?chuàng)建項(xiàng)目的時(shí)候已經(jīng)指定過包名了,如果你想在后面對(duì)其進(jìn)行修改,那么就是在這里進(jìn)行修改的乃戈;
mindsdkVersion用于指定項(xiàng)目最低兼容的Android系統(tǒng)版本,這里15表示最低兼容到Androdid4.0版本;
targetsdkVersion指定的值表示在該目標(biāo)版本上已經(jīng)做過了充分的測(cè)試,系統(tǒng)將會(huì)為你的應(yīng)用程序啟用一些最新的功能和特性;
下面看一看buildTypes閉包:
buildTypes用于指定生成安裝文件的相關(guān)配置,通常只會(huì)有兩個(gè)子閉包,一個(gè)是debug,一個(gè)是release;debug閉包用于生成測(cè)試版安裝文件的配置,release閉包用于指定生成正式版安裝文件的配置;debug可以忽略不寫;
minifyEnabled 用于指定是否對(duì)項(xiàng)目的代碼進(jìn)行了混淆,true表示混淆,false表示沒有;
proguardFiles 用于指定混淆時(shí)指定的規(guī)則文件,這里指定了兩個(gè)文件缩歪,
proguard-android.txt是在android sdk目錄下的,里面是所有項(xiàng)目通用的混淆規(guī)則;proguard-rules.pro是在當(dāng)前項(xiàng)目的根目錄下的,里面可以編寫當(dāng)前項(xiàng)目特有的混淆規(guī)則;
最后還剩一個(gè)dependencies閉包,可以指定當(dāng)前項(xiàng)目的所有依賴關(guān)系,通常一個(gè)android Studio項(xiàng)目一共有3種依賴方式:本地依賴,庫(kù)依賴,遠(yuǎn)程依賴:
本地依賴可以對(duì)本地的jar包或者目錄添加依賴關(guān)系;
庫(kù)依賴可以對(duì)項(xiàng)目中的庫(kù)模塊添加依賴關(guān)系;
遠(yuǎn)程依賴則可以對(duì)jcenter庫(kù)上的開源項(xiàng)目添加依賴關(guān)系;
implementation fileTree是本地依賴聲明,它表示將libs目錄下所有被的.jar后綴文件都添加至項(xiàng)目的構(gòu)建路徑當(dāng)中;
implementation:遠(yuǎn)程依賴聲明,com.android.support:appcompat-v7:26.1.0'是一個(gè)標(biāo)準(zhǔn)的遠(yuǎn)程依賴庫(kù)格式,com.android.support是域名部分,用于和其他公司的庫(kù)做區(qū)分;appcompat-v7是一個(gè)組區(qū)分,用于和同一個(gè)公司的不同庫(kù)區(qū)分;26.1.0是版本號(hào),用于和同一個(gè)庫(kù)的不同版本號(hào)做區(qū)分;加上這一句聲明之后,ggradle首先會(huì)在構(gòu)建項(xiàng)目時(shí)檢查一下本地是否含有這個(gè)庫(kù)的緩存,沒有會(huì)自動(dòng)聯(lián)網(wǎng)下載,然后再添加至項(xiàng)目的構(gòu)建路勁當(dāng)中,
而庫(kù)依賴聲明的基本格式是:implementation project后面加上依賴庫(kù)的名字,比如一個(gè)庫(kù)模塊的名字叫helper,implementation project(':helper')這句聲明即可逛球;
testImplementation是用于聲明測(cè)試用例庫(kù)的,暫時(shí)用不到

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末颤绕,一起剝皮案震驚了整個(gè)濱河市祟身,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌袜硫,老刑警劉巖婉陷,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異憨攒,居然都是意外死亡世杀,警方通過查閱死者的電腦和手機(jī)瞻坝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門所刀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浮创,“玉大人砌函,你說我怎么就攤上這事溜族』褪悖” “怎么了厕倍?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵讹弯,是天一觀的道長(zhǎng)况既。 經(jīng)常有香客問我,道長(zhǎng)组民,這世上最難降的妖魔是什么棒仍? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮邪乍,結(jié)果婚禮上降狠,老公的妹妹穿的比我還像新娘。我一直安慰自己庇楞,他們只是感情好榜配,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吕晌,像睡著了一般蛋褥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上睛驳,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天烙心,我揣著相機(jī)與錄音乏沸,去河邊找鬼匙瘪。 笑死丹喻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鳍悠。 我是一名探鬼主播巧涧,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼袒哥,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了艺演?” 一聲冷哼從身側(cè)響起晓殊,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤介汹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡墨技,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年恐锣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矢赁。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖撤摸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情读宙,我是刑警寧澤唇兑,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布留夜,位于F島的核電站图甜,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏博肋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一衬衬、第九天 我趴在偏房一處隱蔽的房頂上張望滋尉。 院中可真熱鬧飞主,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春技即,著一層夾襖步出監(jiān)牢的瞬間葵陵,已是汗流浹背伤柄。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人丢早。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓斤葱,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355