背景
項(xiàng)目中有兩個(gè)模塊,兩個(gè)模塊最終都是以aar形式被應(yīng)用使用的。其中A模塊調(diào)用了B模塊的方法:
public int test() {
// 業(yè)務(wù)邏輯
return 0
}
但A模塊沒(méi)有使用test方法的返回。
B模塊在一次升級(jí)過(guò)程中,發(fā)現(xiàn)沒(méi)有人使用了test方法的返回,于是將test方法改成了無(wú)返回值樣式:
public int test() {
// 業(yè)務(wù)邏輯
}
并將B模塊發(fā)布aar,由應(yīng)用import,結(jié)果在應(yīng)用編譯的時(shí)候報(bào)錯(cuò),找不到有返回值的test方法。
原因分析
雖然A倉(cāng)庫(kù)沒(méi)有使用B倉(cāng)庫(kù)的test方法返回值,但在A倉(cāng)庫(kù)的aar中,會(huì)標(biāo)明使用的是有返回值的test方法,導(dǎo)致B倉(cāng)庫(kù)test方法刪除返回值后,A倉(cāng)庫(kù)aar找不到相應(yīng)方法編譯失敗。
解決方法
A、B倉(cāng)庫(kù)同時(shí)發(fā)布aar供app使用,即可編譯通過(guò)
經(jīng)驗(yàn)
即使是修改其他倉(cāng)庫(kù)沒(méi)有使用返回值的方法為無(wú)返回值方法,也需要使用方倉(cāng)庫(kù)一起發(fā)布aar。