不同于Eclipse,Android Studio是采用Gradle來構建專案的,Gradle是一個非常先進的專案構建工具,它使用了一種基于Groovy的領域特定語言(DSL)來宣告專案設定,
首先看專案最外層目錄下的build.gradle檔案,代碼如下所示:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
這些代碼是自動生成的,
首先兩處,repositories的閉包中都宣告了jcenter()這個配置,jcenter是一個代碼托管倉庫,
接下來,dependencies閉包中使用classpath宣告一個Gradle插件,因為Gradle并不是專門為構建Android專案而開發的,因此如果我們要想使用它來構建Android專案,則需要宣告com.android.tools.build:gradle:3.1.3這個插件,其中最后面的部分是版本號,
下面我們來看app目錄下的build.gradle檔案,代碼如下所示:
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
buildToolsVersion '28.0.0'
defaultConfig {
applicationId "com.lowthink.helloworld"
minSdkVersion 15
targetSdkVersion 28
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:28.0.0-alpha3'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
第一行應用了一個插件,一般有兩種值可選:
- com.android.application 表示這是一個應用程式模塊,
- com.android.library 表示這是一個庫模塊,
應用程式模塊和庫模塊的最大區別在于,一個是可以直接運行的,一個只能作為代碼庫依附于別的應用程式模塊來運行,
android閉包:在這個閉包中我們可以配置專案構建的各種屬性,
- compileSdkVersion:用于指定專案構建的版本,這里指定成28標示使用Android 9.0系統的SDK編譯,
- buildToolsVersion:用于指定專案構建工具的版本,目前最新的28.0.0,如果有更新的版本時,Android Studio會進行提示,修改buildToolsVersion有兩種方法,
第一種直接在app中的build.gradle里添加
android {
compileSdkVersion 28
buildToolsVersion '28.0.0'
defaultConfig {}
buildTypes {}
}
第二種方法是選中專案,然后點滑鼠右鍵,Open Module Settings,進入里面直接更改 buildTools的版本,如圖


也可以點右上角的這個圖片,如圖

- defultConfig閉包:可以對專案的更多細節進行配置,其中:
applicationId:用于指定專案的包名;
minSdkVersion:用于指定專案最低兼容的Android系統版本,這里設定成15標示最低兼容到Android 4.0系統;
targetSdkVersion:指定的值標示你在該專案版本上已經做過了充分的測驗,系統將會為你的應用程式啟用一些最新的功能和特性;
versionCode:用于指定專案的版本號;
versionName:用于指定專案的版本名;
API Level 與Android版本的對應關系
| API Level | Android版本 |
| --- | --- |
| 28 | 9 |
| 27 | 8.1 |
| 26 | 8.0 |
| 25 | 7.1.1 |
| 24 | 7.0 |
| 23 | 6.0 |
| 22 | 5.1.1 |
| 21 | 5.0.1 |
| 20 | 4.4w.2 |
| 19 | 4.4.2 |
| 18 | 4.3.1 |
| 17 | 4.2.2 |
| 16 | 4.1.2 |
| 15 | 4.0.3 |
| 14 | 4.0 |
| 10 | 2.3 |
| 8 | 2.2 |
buildTypes閉包:用于指定生成安裝檔案的相關配置,通常只會有兩個自閉包,一個是debug,一個是release,
- debug閉包:用于指定生成測驗版安裝檔案的配置;
- release閉包:用于指定生成正式版安裝檔案的配置;
minifyEnabled:用于指定是否對專案的代碼進行混淆,true表示混淆,false表示不混淆;
proguardFiles:用于指定混淆時使用的規則檔案,這里指定了兩個檔案,第一個proguard-android.txt是Android SDK 目錄下的,里面是所有專案通用的混淆規則,第二個proguard-rules.pro是在當前專案的根目錄下的,里面可以撰寫當前專案特有的混淆規則,
注:通過Andorid Studio直接運行專案生成的都是測驗版安裝檔案;
注:debug閉包是可以忽略不寫的;
- dependencies閉包:它可以指定向前專案所有的依賴關系,
通常Android Studio專案一共有3種依賴方式:本地依賴、庫依賴、遠程依賴;- 本地依賴:可以對本地的Jar包或目錄添加依賴關系;
- 庫依賴:可以對專案中的庫模塊添加依賴關系;
- 遠程依賴:可以對jcenter庫上的開源專案添加依賴關系;
注:2018開始用implementation代替compile
- 第一行implementation fileTree就是一個本地依賴宣告,它表示將libs目錄下的所有.jar后綴的檔案都添加到專案的構建路徑當中,
- 第二行implementation則是遠程依賴宣告,com.android.support:appcompat-v7:28.0.0-alpha3就是一個標準的遠程依賴庫格式,其中com.android.support是域名部分,用于和其他公司庫做區分:appcompat-v7是組名稱,用于和同一個公司中不同的庫做區分;28.0.0-alpha3是版本號,用于和同一個庫不同的版本做區分,加上這句宣告后,Gradle在構建專案時會首先檢查一下本地是否已經有這個庫的快取,如果沒有的話則去自動聯網下載,然后再添加到專案的構建路徑當中,
- 第三行代碼
implementation 'com.android.support.constraint:constraint-layout:1.1.2'宣告,為了ConstraintLayout的使用(了解更多請移步這里) - 第四行代碼testImplementation是用于宣告測驗用例庫的;
本文由博客一文多發平臺 OpenWrite 發布!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/31640.html
標籤:Android
