Android開發(fā)學(xué)習(xí)教程(3)- Gradle構(gòu)建項目
—— 既然庸庸碌碌也難逃一死,何不奮起一搏? ——荷馬史詩
如果用過Eclipse寫過Java項目的同學(xué)一定還記得,當(dāng)一個項目需要依賴第三方庫的時侯,我們需要先去下載.jar文件,然后再Build Path,或者直接打開Build Path設(shè)置,再Add Jar文件進去,這兩種操作都繞不開的就是都需要把第三方依賴庫.Jar文件”引入”到項目中,我們程序中才能Load到 .Jar文件中的 .Class類文件。
而在Android Studio中這一切都是通過Gradle去完成的。
Gradle是什么
Gradle是一個項目自動化構(gòu)建工具。它可以幫你管理項目中的第三方包依賴關(guān)系,項目編譯,項目打包,項目部署等,也通過編輯build.gradle來定義自己需要的構(gòu)建邏輯。
我們回到上一篇文章中的第4小點Gradle Scripts文件夾。與gradle有關(guān)的有4個文件:
我們將項目結(jié)構(gòu)切換成Project模式能更直觀的看到這4個文件在項目中的路徑:
我們先來看第①個文件工程目錄下的build.gradle,這個文件的作用是對工程整體gradle的配置,比如配置gradle的版本為4.0.1、配置依賴庫的倉庫URL為mave ‘https://maven.aliyun.com/repository/public/’倉庫 、’https://maven.aliyun.com/repository/google‘倉庫、google倉庫、jcenter倉庫
buildscript {
????
repositories {
????????
maven {?url?
'https://maven.aliyun.com/repository/public/'
?}
????????
maven { url?
'https://maven.aliyun.com/repository/google'
?}
????????
google()
????????
jcenter()
????????
????
}
????
dependencies {
????????
classpath?
'com.android.tools.build:gradle:4.0.1'
????
}
}
allprojects {
????
repositories {
????????
maven { url?
'https://maven.aliyun.com/repository/public/'
?}
????????
maven { url?
'https://maven.aliyun.com/repository/google'
?}
????????
google()
????????
jcenter()
????
}
}
task clean(type: Delete) {
????
delete rootProject.buildDir
}
接著看第②個文件工程目錄下的gradle.properties
org.gradle.jvmargs=-Xmx1536m
android.useAndroidX=
true
android.enableJetifier=
true
分別表示CPU分配1536m的內(nèi)存給gradle的JVM、項目使用AndroidX依賴庫而非Support依賴庫、Android插件會通過重寫其二進制文件來自動遷移現(xiàn)有的第三方庫,以使用AndroidX依賴項
第③個文件gradle文件夾下的gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\:
//services.gradle.org/distributions/gradle-6.1.1-all.zip
這個比較好理解了,就是設(shè)置gradle的版本為6.1.1-all
第④個文件app文件夾下的build.gradle
apply plugin:?
'com.android.application'
android {
????
compileSdkVersion?
28
????
defaultConfig {
????????
applicationId?
"com.example.myapplication"
????????
minSdkVersion?
16
????????
targetSdkVersion?
28
????????
versionCode?
1
????????
versionName?
"1.0"
????
}
????
buildTypes {
????????
release {
????????????
minifyEnabled?
false
????????????
proguardFiles getDefaultProguardFile(
'proguard-android-optimize.txt'
),?
'proguard-rules.pro'
????????
}
????
}
}
dependencies {
????
implementation fileTree(dir:?
'libs'
, include: [
'*.jar'
])
????
implementation?
'androidx.appcompat:appcompat:1.1.0'
????
implementation?
'androidx.recyclerview:recyclerview:1.1.0'
}
這個文件是我們平常開發(fā)中最經(jīng)常會修改的gradle文件。下面采用注釋的方式來一行一行的解釋每行的意思:
// com.android.application 表示這是一個應(yīng)用程序模塊,可直接運行
apply plugin:?
'com.android.application'
android {
// 使用android sdk API28,也就是Android 9.0來編譯你的項目
????
compileSdkVersion?
28
????
defaultConfig {
????
//? 應(yīng)用程序的包名
????????
applicationId?
"com.example.myapplication"
????
// 你的項目只能運行在API 16以上,也就是Android 4.1以上
????????
minSdkVersion?
16
????
// 目標(biāo)版本API 28,即你的項目已在Android 9.0上做過充分測試,并且兼容Android 9.0以下版本
????????
targetSdkVersion?
28
????
// 項目版本號
????????
versionCode?
1
????
// 項目版本名
????????
versionName?
"1.0"
????
}
????
buildTypes {
????????
release {
????????
// 項目打包為release版本時不開啟代碼混淆
????????????
minifyEnabled?
false
????????
// 代碼混淆規(guī)則文件
????????????
proguardFiles getDefaultProguardFile(
'proguard-android-optimize.txt'
),?
'proguard-rules.pro'
????????
}
????
}
}
// 第三方依賴庫及版本
dependencies {
????
implementation fileTree(dir:?
'libs'
, include: [
'*.jar'
])
????
implementation?
'androidx.appcompat:appcompat:1.1.0'
????
implementation?
'androidx.recyclerview:recyclerview:1.1.0'
}
Gradle有什么用
從上面4個文件可以看出,我們可以自由配置Gradle版本號、Gradle倉庫地址、Gradle Build版本號,可以配置項目打包的一些配置如applicationId項目包名、targetSdkVersion 版本號、是否開啟代碼混淆、混淆文件路徑、第三方依賴庫及版本等。
相比Eclipse來說Android Studio的Gradle構(gòu)建工具真是香啊。
源碼鏈接:https://yunjunet.cn/876698.html