不同于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的使用(了解更多請移步[這里](https://blog.csdn.net/jingSummer/article/details/78615360))
* 第四行代碼testImplementation是用于聲明測試用例庫的;
- Android第一行代碼(第二版)筆記
- 第1章
- 1.1.3 Android應用開發特色
- 1.2搭建開發環境
- 1.3創建你的第一個Android項目
- 1.3.4分析你的第一個Android程序
- 1.3.5 詳解項目中的資源
- 1.3.6 詳解build.gradle文件
- 1.4掌握日志工具的使用
- 第2章
- 2.1活動是什么
- 2.2活動的基本用法
- Android開發規范
- Android Studio配置打包生成自定義文件名
- 開發問題記錄
- Android resource compilation failed( com.android.support沖突)
- 關于Android原生集成5+webview,監聽webview返回時,執行兩次onkey方法問題的解決
- java先關基礎鞏固
- URI與URL詳解