Android Studio的Gradle常用命令配置和依赖管理
生活随笔
收集整理的這篇文章主要介紹了
Android Studio的Gradle常用命令配置和依赖管理
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一,gradlew常用命令
./gradlew -v 版本號 ./gradlew clean 清除工程目錄下的build文件夾 ./gradlew build 檢查依賴并編譯打包 這里注意的是 ./gradlew build 命令把debug、release環(huán)境的包都打出來,如果正式發(fā)布只需要打Release的包,該怎么辦呢,下面介紹一個很有用的命令 assemble, 如./gradlew assembleDebug 編譯并打Debug包 ./gradlew assembleRelease 編譯并打Release的包除此之外,assemble還可以和productFlavors結(jié)合使用,比如定義了 installRelease ,uninstallRelease 兩個productFlavors,則可以如下命令: ./gradlew installRelease Release模式打包并安裝 ./gradlew uninstallRelease 卸載Release模式包 二,Gradle配置
Gradle構(gòu)建腳本 build.gradle:
Gradle屬性文件 gradle.properties
Gradle設(shè)置文件 settings.gradle
build.gradle
先看整個項(xiàng)目的gradle配置文件:
buildscript {repositories {jcenter()}dependencies {classpath 'com.android.tools.build:gradle:1.3.0'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files} }allprojects {repositories {jcenter()} } 內(nèi)容主要包含了兩個方面:
一個是聲明倉庫的源,這里可以看到是指明的jcenter(), 之前版本則是mavenCentral(), jcenter可以理解成是一個新的中央遠(yuǎn)程倉庫,兼容maven中心倉庫,而且性能更優(yōu)。
另一個是聲明了Android gradle plugin的版本,android studio 1.0正式版必須要求支持gradle plugin 1.0的版本
某個Moudle的gradle配置文件:
buildscript
2,repositories{}支持java依賴庫管理,用于項(xiàng)目依賴。
3,dependencies{}依賴包的定義。支持maven/ivy,遠(yuǎn)程,本地庫,也支持單文件。如果前面定義了repositories{}maven 庫,則使用maven的依賴庫,使用時只需要按照用類似于com.android.tools.build:gradle:0.4,gradle 就會自動的往遠(yuǎn)程庫下載相應(yīng)的依賴。
apply
//聲明是Android程序 apply plugin: 'com.android.application'apply plugin:聲明構(gòu)建的項(xiàng)目類型。如果是庫的話就加
apply plugin: 'com.android.library' android
android {// 編譯SDK的版本compileSdkVersion 22// build tools的版本buildToolsVersion "23.0.1"//aapt配置aaptOptions {//不用壓縮的文件noCompress 'pak', 'dat', 'bin', 'notice'//打包時候要忽略的文件ignoreAssetsPattern "!.svn:!.git"//分包multiDexEnabled true//--extra-packages是為資源文件設(shè)置別名:意思是通過該應(yīng)用包名+R,com.android.test1.R和com.android.test2.R都可以訪問到資源additionalParameters '--extra-packages', 'com.android.test1','--extra-packages','com.android.test2'}//默認(rèn)配置defaultConfig {//應(yīng)用的包名applicationId "com.example.heqiang.androiddemo"minSdkVersion 21targetSdkVersion 22versionCode 1versionName "1.0"}//編譯配置compileOptions {// java版本sourceCompatibility JavaVersion.VERSION_1_7targetCompatibility JavaVersion.VERSION_1_7}//源文件目錄設(shè)置sourceSets {main {//jni lib的位置jniLibs.srcDirs = jniLibs.srcDirs << 'src/jniLibs'//定義多個資源文件夾,這種情況下,兩個資源文件夾具有相同優(yōu)先級,即如果一個資源在兩個文件夾都聲明了,合并會報錯。res.srcDirs = ['src/main/res', 'src/main/res2']//指定多個源文件目錄java.srcDirs = ['src/main/java', 'src/main/aidl']}}//簽名配置signingConfigs {debug {keyAlias 'androiddebugkey'keyPassword 'android'storeFile file('keystore/debug.keystore')storePassword 'android'}}buildTypes {//release版本配置release {debuggable false// 是否進(jìn)行混淆minifyEnabled true//去除沒有用到的資源文件,要求minifyEnabled為true才生效shrinkResources true// 混淆文件的位置proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'signingConfig signingConfigs.debug//ndk的一些相關(guān)配置,也可以放到defaultConfig里面。//指定要ndk需要兼容的架構(gòu)(這樣其他依賴包里mips,x86,arm-v8之類的so會被過濾掉)ndk {abiFilter "armeabi"}}//debug版本配置debug {debuggable true// 是否進(jìn)行混淆minifyEnabled false//去除沒有用到的資源文件,要求minifyEnabled為true才生效shrinkResources true// 混淆文件的位置proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'signingConfig signingConfigs.debug//ndk的一些相關(guān)配置,也可以放到defaultConfig里面。//指定要ndk需要兼容的架構(gòu)(這樣其他依賴包里mips,x86,arm-v8之類的so會被過濾掉)ndk {abiFilter "armeabi"}}}// lint配置 lintOptions {//移除lint檢查的errorabortOnError false//禁止掉某些lint檢查disable 'NewApi'} } android{}設(shè)置編譯android項(xiàng)目的參數(shù),構(gòu)建android項(xiàng)目的所有配置都寫在這里。
除了上面寫的,在android{}塊中可以包含以下直接配置項(xiàng):
? ? ? productFlavors{ } 產(chǎn)品風(fēng)格配置,ProductFlavor類型
? ? ? testOptions{ } 測試配置,TestOptions類型
? ? ? dexOptions{ } dex配置,DexOptions類型
? ? ? packagingOptions{ } PackagingOptions類型
? ? ? jacoco{ } JacocoExtension類型。 用于設(shè)定 jacoco版本
? ? ? splits{ } Splits類型。
repositories
repositories {flatDir {//本地jar依賴包路徑dirs '../../../../main/libs'} } dependencies
dependencies {compile files('libs/android-support-v4.jar')//在flatDir.dirs下面找依賴的aarcompile (name:'ui', ext:'aar')// 編譯extras目錄下的ShimmerAndroid模塊// 使用transitive屬性設(shè)置為false來排除所有的傳遞依賴,默認(rèn)為truecompile project(':extras:ShimmerAndroid'){transitive = false}// 編譯CommonSDK模塊,但是去掉此模塊中對com.android.support的依賴,防止重復(fù)依賴報錯compile (project(':CommonSDK')) { exclude group: "com.android.support" }provided fileTree(dir: 'src/android5/libs', include: ['*.jar'])provided 'com.android.support:support-v4:21.0.3'provided project(':main-host')//通用使用exclude排除support-compat模塊的依賴compile ('com.jakewharton:butterknife:8.5.1'){exclude module: 'support-compat'} } compile和provided:
compile表示編譯時提供并打包進(jìn)apk。
provided表示只在編譯時提供,不打包進(jìn)apk。
exclude 防止重復(fù)依賴,后面會重點(diǎn)介紹
transitive 排除所有的傳遞依賴,后面會重點(diǎn)介紹include
三,依賴庫管理
本地依賴
dependencies {//單文件依賴compile files('libs/android-support-v4.jar')//某個文件夾下面全部依賴compile fileTree(dir: 'src/android6/libs', include: ['*.jar'])compile (name:'ui', ext:'aar')compile (project(':CommonSDK')) { exclude group: "com.android.support" }provided fileTree(dir: 'src/android5/libs', include: ['*.jar'])provided 'com.android.support:support-v4:21.0.3'provided project(':main-host') } 遠(yuǎn)程依賴
gradle同時支持maven,ivy,以maven作為例子
總結(jié)
以上是生活随笔為你收集整理的Android Studio的Gradle常用命令配置和依赖管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Studio目录结构和G
- 下一篇: android sina oauth2.