起因撼班,想玩一下 jetpack compose,但是用的AndroidStudio版本太低不支持垒酬,然后手賤升級(jí)了砰嘁,接著問題就來了。
凡是Activity中的 viewModels<VM>()
方法都報(bào)紅了勘究,無法正常引用矮湘,但是代碼是可以正常運(yùn)行的。
image.png
首先看了下 viewModels<VM>()
這個(gè)方法口糕,它是kotlin擴(kuò)展ComponentActivity的方法
image.png
ComponentActivity在androidx.activity庫下缅阳,又繼承了androidx.core里的ComponentActivity
image.png
這個(gè)時(shí)候問題發(fā)現(xiàn)了,項(xiàng)目里有兩個(gè)版本的androidx.core景描,明顯是沖突了十办,可是運(yùn)行是正常的,說明最后應(yīng)該只有一個(gè)版本超棺。
image.png
然后導(dǎo)出依賴樹看了下向族,確實(shí)全部都指向了項(xiàng)目里引用的最新的那個(gè)版本,那么解決這個(gè)引用包沖突應(yīng)該就解決問題了棠绘。
image.png
通過在根目錄的 build.gradle
上指定一個(gè)版本件相,同步后就會(huì)發(fā)現(xiàn)只有一個(gè)版本的庫引用了再扭,Rebuild下后代碼也沒報(bào)紅了。
configurations.all {
resolutionStrategy {
resolutionStrategy.eachDependency { details ->
// 根據(jù)依賴樹最后指定的版本夜矗,編譯時(shí)統(tǒng)一指定霍衫,避免沖突
if (details.requested.group == 'androidx.core' && details.requested.module == "core") {
details.useVersion "1.8.0"
}
if (details.requested.group == 'androidx.fragment') {
details.useVersion "1.5.5"
}
}
}
}
image.png