特別說(shuō)明
當(dāng)前博客平臺(tái)賬號(hào)已廢棄,如果有使用細(xì)節(jié)問(wèn)題請(qǐng)前往我新博客平臺(tái)進(jìn)行討論交流。
個(gè)人博客平臺(tái) HuRuWo的技術(shù)小站
文章首發(fā)于個(gè)人博客HuRuWo的技術(shù)小站,如果本文非vip用戶無(wú)法完全瀏覽或者圖片無(wú)法打開(kāi),可前往個(gè)人博客文章地址查看文章并留言討論。
個(gè)人博客文章地址全面組件化---DDComponentForAndroid分析(2)
更多技術(shù)文章訪問(wèn)本人博客HuRuWo的技術(shù)小站,包括 Electron從零開(kāi)發(fā) Android 逆向 app 微信數(shù)據(jù)抓取 抖音數(shù)據(jù)抓取 閑魚數(shù)據(jù)抓取 小紅書數(shù)據(jù)抓取 其他軟件爬蟲 等技術(shù)文章
前言
繼續(xù)上一篇,搭建組件化工程。
1.全面組件化---DDComponentForAndroid分析(1)
2.全面組件化---DDComponentForAndroid分析(2)
3.全面組件化---DDComponentForAndroid分析(3)
集成調(diào)試
其實(shí)上一篇在UI 跳轉(zhuǎn)里面已經(jīng)講解了app主項(xiàng)目拉起one組件和oneone組件。
debugComponent=onecomponent,oneonecomponent
但是這里要講解另一種引入方式:引入組件的aar文件
為什么要依賴aar而不直接依賴工程
1.編譯速度加快,因?yàn)閍ar是預(yù)編譯好的文件
2.實(shí)現(xiàn)合作的時(shí)候,代碼直接互不干擾。a能使用b的組件。但a無(wú)法改動(dòng)b的代碼,實(shí)現(xiàn)徹底分工。
如何引用aar
- 把組件打包成aar并發(fā)布。
這個(gè)部分插件com.dd.comgradle已經(jīng)集成了,只需要
如果組件開(kāi)發(fā)并測(cè)試完成,需要發(fā)布一個(gè)release版本的aar文件到中央倉(cāng)庫(kù),只需要把isRunAlone修改為false,然后運(yùn)行module:assembleRelease命令就可以了。
- isRunAlone =false 讓其作為library打包
- 點(diǎn)擊
module:assembleRelease


發(fā)布在本地文件里面
2.引用aar
- 添加倉(cāng)庫(kù)地址: 這里是本地文件系統(tǒng)
flatDir {
dirs '../componentrelease' //this way we can find the .aar file in folder
}
- 添加 debugComponent 引用
修改
debugComponent=onecomponent,oneonecomponent
為
debugComponent=onecomponent,com.example.oneonecomponent:oneonecomponent
也就是:包名+組件名代表引入aar
到這里,大概整個(gè)框架已經(jīng)搭好了。如果要在實(shí)際生產(chǎn)中使用,還要針對(duì)自己的項(xiàng)目進(jìn)行變化。
一些自定義的變化
發(fā)布aar到自己的maven倉(cāng)庫(kù)
相信你已經(jīng)搭建自己的maven倉(cāng)庫(kù)了-->搭建本地的nexus-maven-倉(cāng)庫(kù)
根目錄導(dǎo)入
nexus_maven.gradle,里面是一些固定的東西gradle.properties添加一些東西,包括版本,倉(cāng)庫(kù)地址(請(qǐng)先建好倉(cāng)庫(kù))apply from: '../nexus_maven.gradle'-
打開(kāi)maven服務(wù)器,點(diǎn)擊
uploadArchives
QQ截圖20171110094808.png

-
引用 添加倉(cāng)庫(kù)并添加依賴
QQ截圖20171110100644.png
debugComponent=onecomponent,com.huruwo:oneoneponent:1.0.0

很明顯,自定義插件報(bào)錯(cuò)(關(guān)于該問(wèn)題在github上的提問(wèn))。說(shuō)明插件對(duì)于
com.huruwo:oneoneponent:1.0.0的處理方式不對(duì),所以應(yīng)該修改源碼:

額外的東西
不知道什么原因AS老是出現(xiàn)clean錯(cuò)誤:
Unable to delete file:
解決辦法:task ':app:clean'. > Unable to delete file:
先安裝lockhunter.exe,用來(lái)解除java的占用
在你的主app的Module下的build.gradle下追加下面一段
task clean(type: Exec) {
//程序路徑
ext.lockhunter = '\"C:\\Program Files\\LockHunter\\LockHunter.exe\"'
def buildDir = file(new File("build"))
commandLine 'cmd', "$lockhunter", '/delete', '/silent', buildDir
}
總結(jié)
花兩篇文章終于介紹完了整個(gè)框架,但是整個(gè)框架并沒(méi)有了解完。因?yàn)樽钪匾腷uild-gradle插件沒(méi)有分析。
案例補(bǔ)上項(xiàng)目地址:

