Flutter 處理依賴沖突
當Flutter發生版本依賴沖突會有類似以下提示:
flutter_localizations any from sdk which depends on intl 0.15.8, intl 0.15.8 is required.
So, because env_pro_supervise depends on intl ^0.16.0, version solving failed.
我們只要在 pubspec.yaml 中將依賴改為相同版本。
如果是兩個依賴的依賴沖突,不清楚當前到底應該使用依賴的哪一個版本時,我們可以使用any來解決版本依賴版本沖突的問題。由於不推薦使用any依賴,我們需要在pubspec.lock中找到正確的版本替換。
如果還是提示沖突,我們可以在 pubspec.yaml 添加以下內容,強制下載,忽略不兼容。
dependency_overrides:
intl: ^0.16.0
Flutter打包apk報錯:Your app isn't using AndroidX.
對於此項目構建Apk提示問題,只需要添加兩行代碼即可解決。
在gradle.properties中添加如下代碼即可:
android.enableJetifier=true
android.useAndroidX=true
flutter run后提示CachedNetworkImageProvider.load的異常,異常信息如下
Compiler message:
/D:/Software/Android/flutter/.pub-cache/hosted/pub.flutter-io.cn/cached_network_image-1.1.0/lib/src/cached_network_image_provider.dart:42:24: Error: The method 'CachedNetworkImageProvider.load' has fewer positional arguments than those of overridden method 'ImageProvider.load'.
ImageStreamCompleter load(CachedNetworkImageProvider key) {
^
/D:/Software/Android/flutter/packages/flutter/lib/src/painting/image_provider.dart:403:24: Context: This is the overridden method ('load').
ImageStreamCompleter load(T key, DecoderCallback decode);
解決方法:
打開pubspec.yaml文件,修改cached_network_image版本從原來的 1.1.0修改為2.0.0-rc,然后點擊Packages get 完成后,重新運行,錯誤日志如下
Running "flutter pub get" in FlutterDouBan...
Because cached_network_image 2.0.0-rc depends on flutter_cache_manager ^1.1.2 and doubanapp depends on flutter_cache_manager 1.1.0, cached_network_image 2.0.0-rc is forbidden.
再次修改pubspec.yaml文件,把flutter_cache_manager版本更改1.1.2就可以
運行flutter run后提示androidx-annotations.pro異常,異常信息如下
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'
解決方法:
修改build.gradle打包的時候忽略掉 androidx-annotations.pro
android {
packagingOptions {
exclude 'META-INF/proguard/androidx-annotations.pro'
}
}