1. 程式人生 > >Android 專案gradle檔案解析

Android 專案gradle檔案解析

概述,在日常開發中,我們需要理清楚專案結構裡面gradle檔案在專案中的作用,一個Android專案中一共有3個.gradle檔案,分別是1個settings.gradle,另外兩個分別是專案Project級別裡面的build.gradle和Module裡面的build.gradle。這些裡面究竟是具有什麼作用呢?

如圖所示:

這裡寫圖片描述

Project級別的build.gradle檔案

這裡寫圖片描述

buildscript {
    repositories {
        jcenter() //指定程式碼的託管倉庫為 jcenter
    }
    dependencies {
        //宣告 gradle的構建版本,
classpath 'com.android.tools.build:gradle:2.2.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter()//Jar下載的倉庫中心 } } //開啟一個任務,指定每次編譯都要清空工程 task clean(type
: Delete) { delete rootProject.buildDir }

Module級別的build.gradle檔案

如圖:
這裡寫圖片描述

apply plugin: 'com.android.application'//說明module的型別,com.android.application為應用程式,com.android.library為類庫

android {
    compileSdkVersion 25//編譯的SDK版本,最佳選擇為最新的API級別
    buildToolsVersion "25.0.2"//編譯的Tools版本,最佳選擇為最新的API級別
    defaultConfig {//預設配置
applicationId "com.bignerdranch.android.criminalintent"//應用程式的包名 minSdkVersion 16 //支援的最低版本,作業系統會拒絕將應用安裝在系統版本低於此標準的裝置上 targetSdkVersion 25 //支援的目標版本,最佳選擇為最新的API級別 versionCode 1 //版本號 versionName "1.0" //版本名稱 } buildTypes {//build型別 release {//釋出 minifyEnabled false //混淆開啟 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//指定混淆規則檔案 } } } dependencies {//指定當前專案的所有依賴關係:本地依賴、庫依賴、遠端依賴 implementation 'com.google.android:flexbox:0.3.2' implementation 'com.android.support.constraint:constraint-layout:1.0.2' implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:design:27.0.2' implementation 'com.android.support:appcompat-v7:26.+' testImplementation 'junit:junit:4.12' implementation files('libs/gson-2.7.jar') } 每次修改完build.gradle檔案,需要與專案進行同步後才能生效。 同步的方法: 選擇Tools → Android → Sync Project with Gradle Files選單項,專案隨即會重新完成編譯。 dependencies 中的第三方依賴包也會自動下載幷包含到專案中來(類似mavean)。

Project級別的settings.gradle檔案

這裡寫圖片描述

只包含安卓專案當中,新的專案中,他會定義我們的主moudle-app 和其他module模組在專案中的構建範圍內。一般單人單module開發可以忽略它,但是在多人開發涉及到多個module元件化就需要使用settings.gradle設定更多規則了。