沖突解決
假設你想在應用中使用 some_package 和 other_package,并且它們依賴于不同版本的 url_launcher,于是我們便有了潛在的沖突,避免這種情況的最好方法是 package 的作者在指定依賴項時使用 版本范圍 而非特定版本,
dependencies:
url_launcher: ^5.4.0 # Good, any version >= 5.4.0 but < 6.0.0
image_picker: '5.4.3' # Not so good, only version 5.4.3 works.
如果 some_package 宣告了以上依賴,并且 another_package 宣告了一個兼容的 url_launcher 依賴項,如 '5.4.6' 或 ^5.5.0, pub 能夠自動解決沖突問題, Gradle modules 和 CocoaPods 也是用類似的方式解決平臺依賴的,
即使 some_package 和 another_package 宣告了不兼容的 url_launcher 版本,它們實際上仍可能以兼容的方式使用 url_launcher,在這種情況下,可在 pubspec.yaml 檔案中添加一個依賴覆寫宣告來強制使用特定版本,從而處理沖突,
為了強制使用版本為 5.4.0 的 url_launcher,你可以對應用的 pubspec.yaml 檔案做如下更改:
dependencies:
some_package:
another_package:
dependency_overrides:
url_launcher: '5.4.0'
如果依賴沖突項不是 package 自身,而是如 guava 這樣特定于 Android 的庫,那么依賴的覆寫宣告必須添加到 Gradle 的構建邏輯中,
為了強制使用版本為 28.0 的 guava,你可以對 android/build.gradle 檔案做如下更改:
configurations.all {
resolutionStrategy {
force 'com.google.guava:guava:28.0-android'
}
}
CocoaPods 目前尚不提供依賴項覆寫功能,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/545512.html
標籤:其他
