全面組件化---DDComponentForAndroid分析(2)

特別說(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

  1. 把組件打包成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
QQ截圖20171110091644.png

這里嘗試發(fā)布模塊的aar:
QQ截圖20171110092216.png

發(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

QQ截圖20171110095432.png
  • 引用 添加倉(cāng)庫(kù)并添加依賴


    QQ截圖20171110100644.png
debugComponent=onecomponent,com.huruwo:oneoneponent:1.0.0
QQ截圖20171110100700.png

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

QQ截圖20171110151648.png

額外的東西

不知道什么原因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)目地址:

https://github.com/HuRuWo/ZuJianHua

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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