Android中怎么配置build.gradle-創(chuàng)新互聯(lián)

Android中怎么配置build.gradle,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)建站-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比安仁網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式安仁網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋安仁地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴(lài)。

一、Project的build.gradle文件:

對(duì)應(yīng)的build.gradle代碼如下:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {//這里是gradle腳本執(zhí)行所需依賴(lài),分別是對(duì)應(yīng)的maven庫(kù)和插件
 
 repositories {
 google()//從Android Studio3.0后新增了google()配置,可以引用google上的開(kāi)源項(xiàng)目
 jcenter()//是一個(gè)類(lèi)似于github的代碼托管倉(cāng)庫(kù),聲明了jcenter()配置,可以輕松引用 jcenter上的開(kāi)源項(xiàng)目
 }
 dependencies {
 classpath 'com.android.tools.build:gradle:3.0.0'////此處是android的插件gradle,gradle是一個(gè)強(qiáng)大的項(xiàng)目構(gòu)建工具
 

 // NOTE: Do not place your application dependencies here; they belong
 // in the individual module build.gradle files
 }
}

allprojects {//這里是項(xiàng)目本身需要的依賴(lài),比如項(xiàng)目所需的maven庫(kù)
 repositories {
 google()
 jcenter()
 }
}

// 運(yùn)行g(shù)radle clean時(shí),執(zhí)行此處定義的task任務(wù)。
// 該任務(wù)繼承自Delete,刪除根目錄中的build目錄。
// 相當(dāng)于執(zhí)行Delete.delete(rootProject.buildDir)。
// gradle使用groovy語(yǔ)言,調(diào)用method時(shí)可以不用加()。
task clean(type: Delete) {
 delete rootProject.buildDir
}
  • buildscript{}閉包里是gradle腳本執(zhí)行所需依賴(lài),分別是對(duì)應(yīng)的maven庫(kù)和插件。

  • allprojects{}閉包里是項(xiàng)目本身需要的依賴(lài),比如項(xiàng)目所需的maven庫(kù)。

  • task clean(type: Delete){}是運(yùn)行g(shù)radle clean時(shí),執(zhí)行此處定義的task任務(wù),該任務(wù)繼承自Delete,刪除根目錄中的build目錄。其中buildscript包含repositories閉包和dependencies閉包。

repositories{}閉包:配置遠(yuǎn)程倉(cāng)庫(kù)

該閉包中聲明了jcenter()和google()的配置,其中jcenter是一個(gè)代碼托管倉(cāng)庫(kù),上面托管了很多Android開(kāi)源項(xiàng)目,在這里配置了jcenter后我們可以在項(xiàng)目中方便引用jcenter上的開(kāi)源項(xiàng)目,從Android Studio3.0后新增了google()配置,可以引用google上的開(kāi)源項(xiàng)目。

dependencies{}閉包:配置構(gòu)建工具

該閉包使用classpath聲明了一個(gè)Gradle插件,由于Gradle并不只是用來(lái)構(gòu)建Android項(xiàng)目,因此此處引入相關(guān)插件來(lái)構(gòu)建Android項(xiàng)目,其中'3.3.3'為該插件的版本號(hào),可以根據(jù)最新的版本號(hào)來(lái)調(diào)整。

二、Module的build.gradle文件:

從文件內(nèi)容可以看出,主要分為三大部分,如下圖所示:

Android中怎么配置build.gradle

1、apply plugin:

// 聲明是Android程序,
//com.android.application 表示這是一個(gè)應(yīng)用程序模塊
//com.android.library 標(biāo)識(shí)這是一個(gè)庫(kù)模塊
//而這區(qū)別:前者可以直接運(yùn)行,后著是依附別的應(yīng)用程序運(yùn)行
apply plugin: 'com.android.application'

文件中第一行使用apply plugin表示應(yīng)用了一個(gè)插件,該插件一般有兩種值可選:

  • 'com.android.application',表示該模塊為應(yīng)用程序模塊,可以直接運(yùn)行,打包得到的是.apk文件

  • 'com.android.library',表示該模塊為庫(kù)模塊,只能作為代碼庫(kù)依附于別的應(yīng)用程序模塊來(lái)運(yùn)行,打包得到的是.aar文件

2、android{}閉包:

這個(gè)閉包主要為了配置項(xiàng)目構(gòu)建的各種屬性:

2.1、添加signingConfigs{}閉包:

 signingConfigs {// 自動(dòng)化打包配置
 release {// 線(xiàn)上環(huán)境
  keyAlias 'test'
  keyPassword '123456'
  storeFile file('test.keystore')
  storePassword '123456'
 }
 debug {// 開(kāi)發(fā)環(huán)境
  keyAlias 'test'
  keyPassword '123456'
  storeFile file('test.keystore')
  storePassword '123456'
 }
 }

可以手動(dòng)添加簽名配置,也可以通過(guò)Project Structure 選中app,點(diǎn)擊Singing添加,具體步驟如下圖所示:

Android中怎么配置build.gradle
配置Singing.png

簽名配置完成后可以方便帶簽名打包,在module的Build Variants中有兩個(gè)Type,分別是debug和release,可以選擇任意一個(gè)類(lèi)型進(jìn)行打包,并且他們會(huì)利用各自配置的Key進(jìn)行打包,執(zhí)行 Run app或者Build->Build apk就會(huì)自動(dòng)在module name/app/build/outputs/apk路徑下生成Apk文件。另一種打包方式是Build->Generate Signed APK填寫(xiě)簽名信息生成Apk。

2.2、compileSdkVersion:設(shè)置編譯時(shí)用的Android版本

2.3、buildToolsVersion:設(shè)置編譯時(shí)使用的構(gòu)建工具的版本,Android Studio3.0后去除此項(xiàng)配置

2.4、defaultConfig{}閉包:

 compileSdkVersion 27//設(shè)置編譯時(shí)用的Android版本
 defaultConfig {
 applicationId "com.billy.myapplication"//項(xiàng)目的包名
 minSdkVersion 16//項(xiàng)目最低兼容的版本
 targetSdkVersion 27//項(xiàng)目的目標(biāo)版本
 versionCode 1//版本號(hào)
 versionName "1.0"//版本名稱(chēng)
 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"//表明要使用AndroidJUnitRunner進(jìn)行單元測(cè)試
 }
  • applicationId:指定了項(xiàng)目的包名。

  • minSdkVersion:指定項(xiàng)目最低兼容的版本,如果設(shè)備小于這個(gè)版本或者大于maxSdkVersion(一般不用)將無(wú)法安裝這個(gè)應(yīng)用,這里指定為16,表示最低兼容到Android 4.1系統(tǒng)。

  • targetSdkVersion:指定項(xiàng)目的目標(biāo)版本,表示在該目標(biāo)版本上已經(jīng)做過(guò)充分測(cè)試,系統(tǒng)會(huì)為該應(yīng)用啟動(dòng)一些對(duì)應(yīng)該目標(biāo)系統(tǒng)的最新功能特性,Android系統(tǒng)平臺(tái)的行為變更,只有targetSdkVersion的屬性值被設(shè)置為大于或等于該系統(tǒng)平臺(tái)的API版本時(shí),才會(huì)生效。例如,若指定targetSdkVersion值為22,則表示該程序最高只在Android5.1版本上做過(guò)充分測(cè)試,在Android6.0系統(tǒng)上(對(duì)應(yīng)targetSdkVersion為23)擁有的新特性如系統(tǒng)運(yùn)行時(shí)權(quán)限等功能就不會(huì)被啟用。

  • versionCode:表示版本號(hào),一般每次打包上線(xiàn)時(shí)該值只能增加,打包后看不見(jiàn)。

  • versionName:表示版本名稱(chēng),展示在應(yīng)用市場(chǎng)上。

  • testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"表明要使用AndroidJUnitRunner進(jìn)行單元測(cè)試。

2.5、 buildTypes{}閉包:

這個(gè)閉包主要指定生成安裝文件的主要配置,一般包含兩個(gè)子閉包,一個(gè)是debug閉包,用于指定生成測(cè)試版安裝文件的配置,可以忽略不寫(xiě);另一個(gè)是release閉包,用于指定生成正式版安裝文件的配置。兩者能配置的參數(shù)相同,大的區(qū)別默認(rèn)屬性配置不一樣,兩種模式支持的屬性配置如下圖:

Android中怎么配置build.gradle
buildTypes配置.png

 buildTypes {// 生產(chǎn)/測(cè)試環(huán)境配置
  release {// 生產(chǎn)環(huán)境
   buildConfigField("boolean", "LOG_DEBUG", "false")//配置Log日志
   buildConfigField("String", "URL_PERFIX", "\"https://release.cn/\"")// 配置URL前綴
   minifyEnabled false//是否對(duì)代碼進(jìn)行混淆
   proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//指定混淆的規(guī)則文件
   signingConfig signingConfigs.release//設(shè)置簽名信息
   pseudoLocalesEnabled false//是否在APK中生成偽語(yǔ)言環(huán)境,幫助國(guó)際化的東西,一般使用的不多
   zipAlignEnabled true//是否對(duì)APK包執(zhí)行ZIP對(duì)齊優(yōu)化,減小zip體積,增加運(yùn)行效率
   applicationIdSuffix 'test'//在applicationId 中添加了一個(gè)后綴,一般使用的不多
   versionNameSuffix 'test'//在applicationId 中添加了一個(gè)后綴,一般使用的不多
  }
  debug {// 測(cè)試環(huán)境
   buildConfigField("boolean", "LOG_DEBUG", "true")//配置Log日志
   buildConfigField("String", "URL_PERFIX", "\"https://test.com/\"")// 配置URL前綴
   minifyEnabled false//是否對(duì)代碼進(jìn)行混淆
   proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//指定混淆的規(guī)則文件
   signingConfig signingConfigs.debug//設(shè)置簽名信息
   debuggable false//是否支持?jǐn)帱c(diǎn)調(diào)試
   jniDebuggable false//是否可以調(diào)試NDK代碼
   renderscriptDebuggable false//是否開(kāi)啟渲染腳本就是一些c寫(xiě)的渲染方法
   zipAlignEnabled true//是否對(duì)APK包執(zhí)行ZIP對(duì)齊優(yōu)化,減小zip體積,增加運(yùn)行效率
   pseudoLocalesEnabled false//是否在APK中生成偽語(yǔ)言環(huán)境,幫助國(guó)際化的東西,一般使用的不多
   applicationIdSuffix 'test'//在applicationId 中添加了一個(gè)后綴,一般使用的不多
   versionNameSuffix 'test'//在applicationId 中添加了一個(gè)后綴,一般使用的不多
  }
 }

release{}閉包和debug{}閉包兩者能配置的參數(shù)相同,大的區(qū)別默認(rèn)屬性配置不一樣:

  • minifyEnabled:表明是否對(duì)代碼進(jìn)行混淆,true表示對(duì)代碼進(jìn)行混淆,false表示對(duì)代碼不進(jìn)行混淆,默認(rèn)的是false。

  • proguardFiles:指定混淆的規(guī)則文件,這里指定了proguard-android.txt文件和proguard-rules.pro文件兩個(gè)文件,proguard-android.txt文件為默認(rèn)的混淆文件,里面定義了一些通用的混淆規(guī)則。proguard-rules.pro文件位于當(dāng)前項(xiàng)目的根目錄下,可以在該文件中定義一些項(xiàng)目特有的混淆規(guī)則。

  • buildConfigField:用于解決Beta版本服務(wù)和Release版本服務(wù)地址不同或者一些Log打印需求控制的。例如:配置buildConfigField("boolean", "LOG_DEBUG", "true"),這個(gè)方法接收三個(gè)非空的參數(shù),第一個(gè):確定值的類(lèi)型,第二個(gè):指定key的名字,第三個(gè):傳值,調(diào)用的時(shí)候BuildConfig.LOG_DEBUG即可調(diào)用。

  • debuggable:表示是否支持?jǐn)帱c(diǎn)調(diào)試,release默認(rèn)為false,debug默認(rèn)為true。

  • jniDebuggable:表示是否可以調(diào)試NDK代碼,使用lldb進(jìn)行c和c++代碼調(diào)試,release默認(rèn)為false

  • signingConfig:設(shè)置簽名信息,通過(guò)signingConfigs.release或者signingConfigs.debug,配置相應(yīng)的簽名,但是添加此配置前必須先添加signingConfigs閉包,添加相應(yīng)的簽名信息。

  • renderscriptDebuggable:表示是否開(kāi)啟渲染腳本就是一些c寫(xiě)的渲染方法,默認(rèn)為false。

  • renderscriptOptimLevel:表示渲染等級(jí),默認(rèn)是3。

  • pseudoLocalesEnabled:是否在APK中生成偽語(yǔ)言環(huán)境,幫助國(guó)際化的東西,一般使用的不多。

  • applicationIdSuffix:和defaultConfig中配置是一的,這里是在applicationId 中添加了一個(gè)后綴,一般使用的不多。

  • versionNameSuffix:表示添加版本名稱(chēng)的后綴,一般使用的不多。

  • zipAlignEnabled:表示是否對(duì)APK包執(zhí)行ZIP對(duì)齊優(yōu)化,減小zip體積,增加運(yùn)行效率,release和debug默認(rèn)都為true。

2.6、sourceSets{}閉包:配置目錄指向

 sourceSets {//目錄指向配置
  main {
   jniLibs.srcDirs = ['libs']//指定lib庫(kù)目錄
  }
 }

配置 jniLibs.srcDirs = ['libs'],可以在Android studio的Android視圖下生成jniLibs文件夾,可以方便我們存放jar包和庫(kù)文件,其中Android視圖下的jniLibs和project視圖下的libs指向同一文件夾(app→libs),如下圖所示:

Android中怎么配置build.gradle

2.7、packagingOptions{}閉包:打包時(shí)的相關(guān)配置

當(dāng)項(xiàng)目中依賴(lài)的第三方庫(kù)越來(lái)越多時(shí),有可能會(huì)出現(xiàn)兩個(gè)依賴(lài)庫(kù)中存在同一個(gè)(名稱(chēng))文件。如果這樣,Gradle在打包時(shí)就會(huì)提示錯(cuò)誤(警告)。那么就可以根據(jù)提示,然后使用以下方法將重復(fù)的文件剔除,比較常用的是通過(guò)exclude去除重復(fù)的文件,例如:

 packagingOptions{
  //pickFirsts做用是 當(dāng)有重復(fù)文件時(shí) 打包會(huì)報(bào)錯(cuò) 這樣配置會(huì)使用第一個(gè)匹配的文件打包進(jìn)入apk
  // 表示當(dāng)apk中有重復(fù)的META-INF目錄下有重復(fù)的LICENSE文件時(shí) 只用第一個(gè) 這樣打包就不會(huì)報(bào)錯(cuò)
  pickFirsts = ['META-INF/LICENSE']

  //merges何必 當(dāng)出現(xiàn)重復(fù)文件時(shí) 合并重復(fù)的文件 然后打包入apk
  //這個(gè)是有默認(rèn)值得 merges = [] 這樣會(huì)把默默認(rèn)值去掉 所以我們用下面這種方式 在默認(rèn)值后添加
  merge 'META-INF/LICENSE'

  //這個(gè)是在同時(shí)使用butterknife、dagger2做的一個(gè)處理。同理,遇到類(lèi)似的問(wèn)題,只要根據(jù)gradle的提示,做類(lèi)似處理即可。
  exclude 'META-INF/services/javax.annotation.processing.Processor'
 }

2.8、productFlavors{}閉包:多個(gè)渠道配置

這個(gè)配置是經(jīng)常會(huì)使用到的,通常在適配多個(gè)渠道的時(shí)候,需要為特定的渠道做部分特殊的處理,比如設(shè)置不同的包名、應(yīng)用名等。場(chǎng)景:當(dāng)我們使用友盟統(tǒng)計(jì)時(shí),通常需要設(shè)置一個(gè)渠道ID,那么我們就可以利用productFlavors來(lái)生成對(duì)應(yīng)渠道信息的包,如:

android { 
 productFlavors {
  wandoujia {
   //豌豆莢渠道包配置
   manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
   //manifestPlaceholders的使用在后續(xù)章節(jié)(AndroidManifest里的占位符)中介紹
  }
  xiaomi {
   manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
   applicationId "com.wiky.gradle.xiaomi" //配置包名

  }
  _360 {
   manifestPlaceholders = [UMENG_CHANNEL_VALUE: "_360"]
  }
  //...
 } 
}

當(dāng)然也有更簡(jiǎn)潔的方式:

android { 
 productFlavors {
  wandoujia {}
  xiaomi {}
  _360 {}
  //...
 } 

 productFlavors.all { 
  //批量修改,類(lèi)似一個(gè)循序遍歷
  flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] 
 }
}

配置完之后,在命令行窗口中(Terminal)中輸入gradlew assembleRelease(windows)即可開(kāi)始打包,在Mac系統(tǒng)中對(duì)應(yīng)指令應(yīng)該是./gradlew assembleRelease。當(dāng)然,如果想要debug版本的包,將指令中assembleRelease改為assembleDebug即可。最后生成的包還是在app/build/outputs/apk中,默認(rèn)命名格式如app-wandoujia-release-unsigned.apk,在module的Build Variants中可以選擇相應(yīng)的渠道。

注:Android Studio3.0需在主app的build.gradle里面的

defaultConfig {
targetSdkVersion:***
minSdkVersion :***
versionCode:***
versionName :***
//版本名后面添加一句話(huà),意思就是flavor dimension 它的維度就是該版本號(hào),這樣維度就是都是統(tǒng)一的了
flavorDimensions "versionCode"
}

2.9、lintOptions{}閉包:代碼掃描分析

Lint 是Android Studio 提供的 代碼掃描分析工具,它可以幫助我們發(fā)現(xiàn)代碼結(jié)構(gòu)/質(zhì)量問(wèn)題,同時(shí)提供一些解決方案,而且這個(gè)過(guò)程不需要我們手寫(xiě)測(cè)試用例。

Lint 發(fā)現(xiàn)的每個(gè)問(wèn)題都有描述信息和等級(jí)(和測(cè)試發(fā)現(xiàn) bug 很相似),我們可以很方便地定位問(wèn)題,同時(shí)按照嚴(yán)重程度進(jìn)行解決。

 //程序在編譯的時(shí)候會(huì)檢查lint,有任何錯(cuò)誤提示會(huì)停止build,我們可以關(guān)閉這個(gè)開(kāi)關(guān)
 lintOptions {
  abortOnError false //即使報(bào)錯(cuò)也不會(huì)停止打包
  checkReleaseBuilds false //打包release版本的時(shí)候進(jìn)行檢測(cè)
 }

3、dependencies{}閉包:

該閉包定義了項(xiàng)目的依賴(lài)關(guān)系,一般項(xiàng)目都有三種依賴(lài)方式:本地依賴(lài)、庫(kù)依賴(lài)和遠(yuǎn)程依賴(lài)。本地依賴(lài)可以對(duì)本地的jar包或目錄添加依賴(lài)關(guān)系,庫(kù)依賴(lài)可以對(duì)項(xiàng)目中的庫(kù)模塊添加依賴(lài)關(guān)系,遠(yuǎn)程依賴(lài)可以對(duì)jcener庫(kù)上的開(kāi)源項(xiàng)目添加依賴(lài)關(guān)系。從Android Studio3.0后compile引入庫(kù)不在使用,而是通過(guò)api和implementation,api完全等同于以前的compile,用api引入的庫(kù)整個(gè)項(xiàng)目都可以使用,用implementation引入的庫(kù)只有對(duì)應(yīng)的Module能使用,其他Module不能使用,由于之前的項(xiàng)目統(tǒng)一用compile依賴(lài),導(dǎo)致的情況就是模塊耦合性太高,不利于項(xiàng)目拆解,使用implementation之后雖然使用起來(lái)復(fù)雜了但是做到降低偶合興提高安全性。

dependencies {//項(xiàng)目的依賴(lài)關(guān)系
 implementation fileTree(include: ['*.jar'], dir: 'libs')//本地jar包依賴(lài)
 implementation 'com.android.support:appcompat-v7:27.1.1'//遠(yuǎn)程依賴(lài)
 implementation 'com.android.support.constraint:constraint-layout:1.1.2'
 testImplementation 'junit:junit:4.12'//聲明測(cè)試用例庫(kù)
 androidTestImplementation 'com.android.support.test:runner:1.0.2'
 androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
  • implementation fileTree(include: ['*.jar'], dir: 'libs'):implementation fileTree是一個(gè)本地依賴(lài)聲明,表示將libs目錄下所有.jar后綴的文件都添加到項(xiàng)目的構(gòu)建路徑當(dāng)中。

  • implementation 'com.android.support:appcompat-v7:27.1.1':implementation語(yǔ)句為 遠(yuǎn)程依賴(lài)聲明,'com.android.support:appcompat-v7:27.1.1'為一個(gè)標(biāo)準(zhǔn)的遠(yuǎn)程依賴(lài)庫(kù)格式,其中com.android.support為域名部分,用于區(qū)分不同公司的庫(kù);appcompat-v7為組件名稱(chēng),用于區(qū)分同一個(gè)公司的不同庫(kù);27.1.1為版本號(hào),用于區(qū)分同一個(gè)庫(kù)的不同版本。加上這句聲明后,Gradle在構(gòu)建項(xiàng)目時(shí)會(huì)先檢查一下本地是否已經(jīng)緩存過(guò)該庫(kù),若沒(méi)有緩存則自動(dòng)聯(lián)網(wǎng)下載,下載后自動(dòng)添加到項(xiàng)目的構(gòu)建路徑中去。

  • testImplementation和androidTestImplementation:表示聲明測(cè)試用例庫(kù)。

Module完整的build.gradle配置如下:

// 聲明是Android程序,
//com.android.application 表示這是一個(gè)應(yīng)用程序模塊
//com.android.library 標(biāo)識(shí)這是一個(gè)庫(kù)模塊
//而這區(qū)別:前者可以直接運(yùn)行,后著是依附別的應(yīng)用程序運(yùn)行
apply plugin: 'com.android.application'

android {
 signingConfigs {// 自動(dòng)化打包配置
  release {// 線(xiàn)上環(huán)境
   keyAlias 'test'
   keyPassword '123456'
   storeFile file('test.jks')
   storePassword '123456'
  }
  debug {// 開(kāi)發(fā)環(huán)境
   keyAlias 'test'
   keyPassword '123456'
   storeFile file('test.jks')
   storePassword '123456'
  }
 }
 compileSdkVersion 27//設(shè)置編譯時(shí)用的Android版本
 defaultConfig {
  applicationId "com.billy.myapplication"//項(xiàng)目的包名
  minSdkVersion 16//項(xiàng)目最低兼容的版本
  targetSdkVersion 27//項(xiàng)目的目標(biāo)版本
  versionCode 1//版本號(hào)
  versionName "1.0"//版本名稱(chēng)
  flavorDimensions "versionCode"
  testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"//表明要使用AndroidJUnitRunner進(jìn)行單元測(cè)試
 }
 buildTypes {// 生產(chǎn)/測(cè)試環(huán)境配置
  release {// 生產(chǎn)環(huán)境
   buildConfigField("boolean", "LOG_DEBUG", "false")//配置Log日志
   buildConfigField("String", "URL_PERFIX", "\"https://release.cn/\"")// 配置URL前綴
   minifyEnabled false//是否對(duì)代碼進(jìn)行混淆
   proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//指定混淆的規(guī)則文件
   signingConfig signingConfigs.release//設(shè)置簽名信息
   pseudoLocalesEnabled false//是否在APK中生成偽語(yǔ)言環(huán)境,幫助國(guó)際化的東西,一般使用的不多
   zipAlignEnabled true//是否對(duì)APK包執(zhí)行ZIP對(duì)齊優(yōu)化,減小zip體積,增加運(yùn)行效率
   applicationIdSuffix 'test'//在applicationId 中添加了一個(gè)后綴,一般使用的不多
   versionNameSuffix 'test'//在applicationId 中添加了一個(gè)后綴,一般使用的不多
  }
  debug {// 測(cè)試環(huán)境
   buildConfigField("boolean", "LOG_DEBUG", "true")//配置Log日志
   buildConfigField("String", "URL_PERFIX", "\"https://test.com/\"")// 配置URL前綴
   minifyEnabled false//是否對(duì)代碼進(jìn)行混淆
   proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//指定混淆的規(guī)則文件
   signingConfig signingConfigs.debug//設(shè)置簽名信息
   debuggable false//是否支持?jǐn)帱c(diǎn)調(diào)試
   jniDebuggable false//是否可以調(diào)試NDK代碼
   renderscriptDebuggable false//是否開(kāi)啟渲染腳本就是一些c寫(xiě)的渲染方法
   zipAlignEnabled true//是否對(duì)APK包執(zhí)行ZIP對(duì)齊優(yōu)化,減小zip體積,增加運(yùn)行效率
   pseudoLocalesEnabled false//是否在APK中生成偽語(yǔ)言環(huán)境,幫助國(guó)際化的東西,一般使用的不多
   applicationIdSuffix 'test'//在applicationId 中添加了一個(gè)后綴,一般使用的不多
   versionNameSuffix 'test'//在applicationId 中添加了一個(gè)后綴,一般使用的不多
  }
 }

 sourceSets {//目錄指向配置
  main {
   jniLibs.srcDirs = ['libs']//指定lib庫(kù)目錄
  }
 }

 packagingOptions{//打包時(shí)的相關(guān)配置
  //pickFirsts做用是 當(dāng)有重復(fù)文件時(shí) 打包會(huì)報(bào)錯(cuò) 這樣配置會(huì)使用第一個(gè)匹配的文件打包進(jìn)入apk
  // 表示當(dāng)apk中有重復(fù)的META-INF目錄下有重復(fù)的LICENSE文件時(shí) 只用第一個(gè) 這樣打包就不會(huì)報(bào)錯(cuò)
  pickFirsts = ['META-INF/LICENSE']

  //merges何必 當(dāng)出現(xiàn)重復(fù)文件時(shí) 合并重復(fù)的文件 然后打包入apk
  //這個(gè)是有默認(rèn)值得 merges = [] 這樣會(huì)把默默認(rèn)值去掉 所以我們用下面這種方式 在默認(rèn)值后添加
  merge 'META-INF/LICENSE'

  //這個(gè)是在同時(shí)使用butterknife、dagger2做的一個(gè)處理。同理,遇到類(lèi)似的問(wèn)題,只要根據(jù)gradle的提示,做類(lèi)似處理即可。
  exclude 'META-INF/services/javax.annotation.processing.Processor'
 }

 productFlavors {
  wandoujia {}
  xiaomi {}
  _360 {}
 }

 productFlavors.all {
   //批量修改,類(lèi)似一個(gè)循序遍歷
  flavor -> flavor.manifestPlaceholders = [IFLYTEK_CHANNEL: name]
 }

 //程序在編譯的時(shí)候會(huì)檢查lint,有任何錯(cuò)誤提示會(huì)停止build,我們可以關(guān)閉這個(gè)開(kāi)關(guān)
 lintOptions {
  abortOnError false
  //即使報(bào)錯(cuò)也不會(huì)停止打包
  checkReleaseBuilds false
  //打包release版本的時(shí)候進(jìn)行檢測(cè)
 }

}

dependencies {
 //項(xiàng)目的依賴(lài)關(guān)系
 implementation fileTree(include: ['*.jar'], dir: 'libs')
 //本地jar包依賴(lài)
 implementation 'com.android.support:appcompat-v7:27.1.1'
 //遠(yuǎn)程依賴(lài)
 implementation 'com.android.support.constraint:constraint-layout:1.1.2'
 testImplementation 'junit:junit:4.12'
 //聲明測(cè)試用例庫(kù)
 androidTestImplementation 'com.android.support.test:runner:1.0.2'
 androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

本文名稱(chēng):Android中怎么配置build.gradle-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)地址:http://muchs.cn/article2/cossoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)頁(yè)設(shè)計(jì)公司、商城網(wǎng)站、品牌網(wǎng)站制作Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)