依賴相關(guān)api:
/**
* 依賴配置api
*/
buildscript {ScriptHandler scriptHandler->
//配置我們工程的倉(cāng)庫(kù)地址,閉包的參數(shù)一般都省去,閉包中的this,owner,delegate中的方法都是可以直接調(diào)用
? ? scriptHandler.repositories { RepositoryHandler repositoryHandler->
????????repositoryHandler.google()
????????repositoryHandler.jcenter()
????????repositoryHandler.mavenLocal()
????????repositoryHandler.mavenCentral()
????????repositoryHandler.ivy{}
????????repositoryHandler.maven {//私有maven倉(cāng)庫(kù),可以配置多個(gè)
? ? ? ? ? ? MavenArtifactRepository mavenArtifactRepository->
????????????????//一般是公司內(nèi)部的maven地址
? ? ? ? ? ????? mavenArtifactRepository.name 'hexindai'
? ? ? ? ? ? ? ? ?mavenArtifactRepository.url 'http://localhost:8081:/nexus/repositories'
? ? ? ? ? ? ? ? ? mavenArtifactRepository.credentials{
????????????????????????username='amdin'
? ? ? ? ? ? ? ? ????????password='andim124'
? ? ? ? ? ? }
????}
}
//buildscript中的dependencies方法是配置我們工程的"插件"依賴,是gradle本身框架對(duì)第三方庫(kù)的依賴
? ? scriptHandler.dependencies {
????????//應(yīng)用下面的之后,就能指定工程為Android工程或Android lib
? ? ? ? classpath'com.android.tools.build:gradle:3.0.0'
? ? ? ? // NOTE: Do not place your application dependencies here; they belong
????????// in the individual module build.gradle files
? ? }
}
//app中project中的dependencies是配置網(wǎng)站或者app需要引用第三方庫(kù).(為應(yīng)用程序添加依賴)
//應(yīng)用程序的依賴一般有:
//依賴本地庫(kù)
implementation fileTree(include: ['*.jar'], dir: 'libs')//fileTree,file ,files
//依賴遠(yuǎn)程庫(kù)1 ,使用compile引入的第三方庫(kù),不僅會(huì)在編譯階段使用,并且會(huì)打包到apk包中
compile 'com.jakewharton:butterknife:8.4.0'(jar包,var包,arr包(包含資源的jar包Android獨(dú)有))
//依賴遠(yuǎn)程庫(kù)2 ,使用provided引入的第三方庫(kù),只會(huì)在編譯階段使用,不會(huì)打包到apk包中
provided 'com.jakewharton:butterknife:8.4.0'
//依賴第三方有源碼的工程
compile project(':baidumobstat-react-native')
//依賴沖突:第三方庫(kù)中引入了相同的庫(kù)
compile 'io.reactivex.rxjava2:rxjava:2.0.7'{
exclude module :'support-v4'//通過(guò)module方式排除依賴
exclude group:'com.android.support'//排除同一個(gè)組下的多個(gè)庫(kù)沖突
}
//傳遞依賴.比如 compile 'com.squareup.retrofit2:retrofit:2.1.0',retrofit中引入的
//第三方庫(kù),我們項(xiàng)目中也要使用,就可以使用傳遞依賴,將傳遞依賴設(shè)為true
compile 'io.reactivex.rxjava2:rxjava:2.0.7'{
exclude module :'support-v4'//通過(guò)module方式排除依賴
exclude group:'com.android.support'//排除同一個(gè)組下的多個(gè)庫(kù)沖突
? ? transitive false //false默認(rèn)禁止傳遞依賴,盡量不允許使用傳遞依賴,因?yàn)椴淮_定性.萬(wàn)一依賴的工程升級(jí)了,不依賴工程c了.}
//引入方式:compile和provided
/*
compile 第三方依賴?yán)锩娴念惡唾Y源都會(huì)被打入到工程中.
provided(占位編譯) 編譯的時(shí)候回引入第三方的類和資源,打包時(shí)不會(huì)打入項(xiàng)目中.運(yùn)行時(shí)不處理會(huì)報(bào)錯(cuò).
比如:場(chǎng)景1:Tinker庫(kù),他的作用編譯時(shí)生成application類,只要生成了application類,運(yùn)行時(shí)是不需要的.
場(chǎng)景2:當(dāng)前工程是類庫(kù)工程的話,如果類庫(kù)中引入的okhttp,我們項(xiàng)目中也使用了okhttp,那么類庫(kù)中就可以使用provided
*/
//外部命令執(zhí)行,拷貝apk到外部文件夾中.執(zhí)行./gradlew build //命令生成apk 后,執(zhí)行./gradlew apkcopy
//首先自定義一個(gè)task
task(name: 'apkcopy'){
????//doLast都會(huì)在gradle的執(zhí)行階段執(zhí)行
????doLast{? ??
????????def sourcePath=this.buildDir.path+'/outputs/apk'
????????def desationPath='/Users/lichao/Downloads/'
????????def command="mv -f ${sourcePath ${desationPath}}"
????????//exec執(zhí)行外部命令
????????exec{
????????????try{? ? ? ? ? ??
????????????????executable'bash'args'-c',command? ? ? ??
????????????}catch(Exceptione){? ? ? ? ? ??
????????????????println('the command is execute failed.')? ? ? ?
?????????????}? ??
????????}
????}
}