讓人迷茫的gradle

Gradle

  • Gradle支持多工程構建和局部構建
  • Gradle支持遠程或本地依賴管理:
  1. 從遠程maven倉
  2. nexus私服
  3. ivy倉庫以及本地倉庫依賴
  • Gradle與Ant、Naven兼容
  • Gradle適用靈活
  • Gradle可輕鬆前一:適用任何結構的工程,可以在同一個開發平臺平行構建原工程和Gradle工程
  • Gradle可以更容易的集成到自動花構建系統

local.properties
該文件位於項目根目錄,一般用來配置本地環境屬性,如sdk!

sdk.dir=/Users/zhangsan/Library/Android/sdk

settings.gradle
該文件位於項目跟目錄,其中包含項目所包含的Module

include ':app'
include ':library'

build.gradle
該文件位於項目根目錄,用於定義適用項目所有模塊的構建配置

buildscript { 	//定義項目中所有哦模塊公用的Gradle 存儲區和依賴區
    repositories {//依賴庫的路徑
        google()
        jcenter()
    }
    dependencies {//添加插件
       classpath 'com.android.tools.build:gradle:3.2.0'
    }
}
allprojects {
    repositories { //項目中依賴庫的路徑
    	jcenter()
        google()
        mavenCentral()
    }
}
//打包錢執行clean任務
task clean(type:Delete){
	delete rootProject.buildDir
}

app Module下的buil.gradle
該文件位於項目的Module目錄下,用於配置適用於所在模塊的構建配置

//插件
apply plugin: 'com.android.application'//這標表示此module是一個可運行的應用程序,可以直接run的
apply plugin:'com.android.library'//這表示此module是個依賴庫的工程,不可直接run
apply plugin:'java'//表示此module是一個java項目,在此module中只能適用java的api
apply from: 'xxx.gradle'//引用gradle

android {
  compileSdkVersion 27    //編譯sdk版本
  buildToolsVersion "27.0.1"  //編譯時採用的構建工具版本
  
//defaultConfig閉包參數,可以覆蓋Manifest.xml文件,配置應用的版本
  defaultConfig {
    applicationId 'com.example.demo'      //唯一應用ID<至少包含兩段,即一個圓點;字母數字下劃線;字母開頭> 一般情況下和包名相同,但也可以修改報名,和manifest文件保持一致就行
    minSdkVersion 19	// 可運行的最小系統版本
    targetSdkVersion 26	 // 可運行的最高系統版本
    versionCode 1	   // 版本號
    versionName "1.0"	  // 版本名
    multiDexEnabled true    //方法數超過64k ,minsdk>=21  只需配置這裏,否則還要添加依賴包如下;然後配置文件重命名MultiDexApplication;或者繼承MultiDexApplication;或者在自己的application中重寫attachBaseContext,然後MultiDex.install(this);
     ndk {	 //ndk過濾so包(以下爲只支持v7包);如果error,在gradle.properties文件中添加Android.useDeprecatedNdk=true
            abiFilters "armeabi-v7a"
        }
    //buildTypes閉包參數說明,默認有release和debug兩種,默認只顯示release方式,一般是正式發佈的包
	buildTypes{
    	release{
    		minifyEnabled false	//混淆開關
    		//指定混淆文件及混淆文件規則配置文件的位置
    		proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
    	}
    }

  }
dependencies{
	implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])//編譯文件樹(編譯依賴libs目錄下所有jar)
    implementation project(':Name') //是將另一個module進行編譯並打包
    implementation (name:'xxx', ext:'jar')
    implementation 'androidx.appcompat:appcompat:1.0.2'
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章