链接:https://juejin.im/post/5d4cef326fb9a06ace523d6f
一桩惨案,凶手是谁
前几天刚下载了 Flutter 最新开发版的 sdk — Flutter 1.8.3,结果依赖了几个常用的 Flutter 官方插件后程序死活跑不起来,并提示了以下错误信息:
紧锣密鼓,疑点重重
通过 Google 和 逛 StackOverflow 发现:Flutter 在 1.7 版本之后增加了对 AndroidX 的支持。是的,没错!Flutter 支持 AndroidX 了!想了想,这也是情有可原的,毕竟 Google 当家作主,这是没想到这么快就实施在了 Flutter 平台上。
对于非 Android 开发的同学来说,AndroidX 可能并不熟悉,这里简单做一下小科普。其实,AndroidX 是 Android 官方团队用于在 Jetpack 中开发、测试、打包和发布库以及对其进行版本控制的开源项目。AndroidX 对原始 Android 支持库,即
android.support.xxx
包进行了重大改进。与原 android.support 系列库一样,AndroidX 与 Android 操作系统分开提供,并与各个 Android 版本向后兼容。AndroidX 完全取代了 android.support 库,不仅提供同等的功能,而且提供了新的库。
那好吧,我肯定是不想升级至 AndroidX 版本的,原因很简单:就 Android 平台而言,如今大量优秀的开源仓库都是基于的 android.support 系列库进行开发的,然而它与 AndroidX 并不能共存,所以对于大部分开发者和公司而言,这样的改变目前来说代价是很大的。况且 Flutter 虽然仅仅发展了几年,但是已然诞生了很多优秀的插件,当然,除了 Flutter 官方开发的插件以外,大部分还是基于的 android.support 库,所以,近期来说,暂时不会迁移到 AndroidX。
三司会审,盖棺定论
好的,确认了问题原因之后,就不难推断出,出现该问题的最大原因是引用的插件版本过高。
参照 Flutter 官方对于 AndroidX 的兼容文档, 于是查到了在支持 AndroidX 之前,
flutter/plugins
官方插件的最新版本:
android_alarm_manager: 0.2.3
android_intent: 0.2.1
battery: 0.3.0
camera: 0.2.9+1
cloud_firestore: 0.8.2+3
cloud_functions: 0.0.5
connectivity: 0.3.2
device_info: 0.3.0
firebase_admob: 0.7.0
firebase_analytics: 1.1.0
firebase_auth: 0.7.0
firebase_core: 0.2.5+1
firebase_database: 1.0.5
firebase_dynamic_links: 0.1.1
firebase_messaging: 2.1.0
firebase_ml_vision: 0.2.1
firebase_performance: 0.0.8+1
firebase_remote_config: 0.0.6+1
firebase_storage: 1.0.4
google_maps_flutter: 0.1.0
google_sign_in: 3.2.4
image_picker