android:Program type already present: android.support.v4.app.INotificationSideChannel


背景

這個錯誤的原因是:androidx和 android.support同時存在。
首先,網上有很多解答說這樣處理:

在 gradle.properties 添加:
android.useAndroidX=true
android.enableJetifier=true
然后再build.gradle 中添加這個:
implementation "androidx.room:room-runtime:2.0.0-alpha1"
annotationProcessor "androidx.room:room-compiler:2.0.0-alpha1"

如果你是一個新項目,那么也許可以解決你的問題。
但如果是一個沒有使用androidx的項目,而且項目比較大的情況,這會使得你更加糟糕。
因為這個配置,會使你進入androidx 開發模式下。這意味着你需要全部升級,我想這會是一個大的工程,這將會讓你陷入一個泥潭中。

解決

我是在引入了一個庫后,出現這個問題。這個庫使用androidx,而我其他的庫使用android.support,使得我的項目無法build。
比如:

implementation 'com.jakewharton:butterknife:10.2.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0'

在高版本中,butterknife將使用androix。那么使用低版本可以解決這個問題,比如8.4.0。
ps:

在以后的版本中官方已經表明只支持androidx,如果項目不是非常大,或者有充足的時間,那么可以嘗試升級。

總結

讓我們在合理的條件下擁抱androidx。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM