使用 maven 庫的資源(比如 aar)是日常開發(fā)中經(jīng)常使用的方式,無論 aar 是第三方的還是自己團(tuán)隊(duì)開發(fā)的亿汞,這種方式都給代碼封裝和重用帶來了諸多便利瞭空。
引入的 aar 經(jīng)常能看到 SNAPSHOT 后綴或者 changing = true 字樣,還會(huì)遇到 aar 更新后不生效問題疗我,本文就簡介一下相關(guān)含義和原因咆畏。
SNAPSHOT
示例:
implementation('com.***.plugin:1.0.4-SNAPSHOT')
- 加和不加 SNAPSHOT 的區(qū)別是:
- 加了 SNAPSHOT 后綴,gradle 會(huì)自動(dòng)認(rèn)為:該 aar 只是一個(gè)”快照“吴裤,還處在開發(fā)階段旧找,會(huì)經(jīng)常性的更新。這種狀態(tài)下麦牺,我們修改了 aar 后不需要修改版本號(hào)钮蛛,相同版本的 aar 可以在 maven 庫直接覆蓋,并使依賴該 aar 的項(xiàng)目生效剖膳;
- 不加 SNAPSHOT 后綴表示是穩(wěn)定版魏颓,此時(shí)相同版本的 aar 不能覆蓋,只能修改版本號(hào)后再上傳到 maven吱晒;
- 顯然甸饱,SNAPSHOT 后綴適合在開發(fā)調(diào)試期使用,stable 版本適合在不需要經(jīng)常修改 aar 或者在發(fā)版上線時(shí)使用仑濒;
changing = true
示例:
implementation ('com.***.plugin':1.4) { changing = true }
- 對 gradle 而言叹话,changing = true 和標(biāo)記 SNAPSHOT 后綴功能是一樣的,所以(需要時(shí))設(shè)置一項(xiàng)即可躏精;
cache
也許你會(huì)發(fā)現(xiàn)渣刷,標(biāo)記了 chaning = true 或加入了 SNAPSHOT 后綴后,aar 的更新(沒有升級版本號(hào))并沒有在依賴的項(xiàng)目中生效矗烛,原因是 gradle 有緩存機(jī)制辅柴,而且默認(rèn)的緩存時(shí)間是 24 小時(shí),所以需要進(jìn)行如下配置瞭吃,修改 gradle 緩存時(shí)間為 0 秒碌嘀,來達(dá)到 aar 立即生效的效果;
configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
如果不進(jìn)行緩存時(shí)間設(shè)置歪架,就需要手動(dòng)清空 gradle 緩存股冗,在 ~/.gradle/caches 目錄下,搜索相關(guān)的文件并刪除和蚪;還有一種說法是加入 --refresh--dependeces (例如 ./gradlew build --refresh-dependencies) 參數(shù)止状,相當(dāng)于強(qiáng)制刷新依賴烹棉,但是這個(gè)沒試過;