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)容可以看出,主要分為三大部分,如下圖所示:
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添加,具體步驟如下圖所示:
配置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)屬性配置不一樣,兩種模式支持的屬性配置如下圖:
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),如下圖所示:
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)
猜你還喜歡下面的內(nèi)容