gradle-依賴及外部命令執(zhí)行api

依賴相關(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.')? ? ? ?

?????????????}? ??

????????}

????}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,153評(píng)論 25 708
  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 14,041評(píng)論 2 59
  • 一.榜單介紹 排行榜包括四大類: 單一框架:僅提供路由、網(wǎng)絡(luò)層、UI層、通信層或其他單一功能的框架 混合開(kāi)發(fā)框架:...
    偉子男閱讀 5,369評(píng)論 0 161
  • 附上原文作者連接:作者:金誠(chéng) 一.榜單介紹 排行榜包括四大類: 單一框架:僅提供路由、網(wǎng)絡(luò)層、UI層、通信層或其他...
    這個(gè)美嘉不姓陳閱讀 2,328評(píng)論 1 35
  • 題記:這個(gè)是看小碼哥的李南江老師講的 《狂虐H5+移動(dòng)跨平臺(tái)開(kāi)發(fā)》而寫(xiě),為了讓自己更有條理的整理思路而生。下面大家...
    旅途中的任任任小皓閱讀 593評(píng)論 0 1

友情鏈接更多精彩內(nèi)容