Flutter执行flutter packages get时获取android_alarm_manager:^0.1.0遇套接字错误
android_alarm_manager: ^0.1.0获取失败的问题 Hey,我来帮你捋清楚这个问题:你在Win7代理环境下,大部分依赖都能正常拉取,唯独android_alarm_manager: ^0.1.0报socket错误,这大概率是这个超旧版本的适配问题——毕竟0.1.0是好几年前的版本了,不管是源地址还是请求协议,可能都和现在的代理环境不兼容。给你几个针对性的解决办法,按顺序试就行:
1. 优先升级依赖版本(最省心的方案)
旧版本的android_alarm_manager不仅拉取麻烦,后续和新Flutter版本也容易出现兼容性问题。直接把pubspec.yaml里的版本换成最新稳定版,比如:
dependencies: flutter: sdk: flutter cupertino_icons: ^0.1.0 font_awesome_flutter: 6.0.0 android_alarm_manager: ^2.0.0 # 可以根据pub.dev的最新稳定版调整
之后执行flutter pub get(现在官方更推荐用这个命令代替flutter packages get),应该就能正常拉取了。
2. 检查代理的HTTPS配置是否正确
socket错误往往和HTTPS请求的代理处理有关,你可以手动在命令行里设置Flutter的代理参数,确保HTTPS代理配置正确:
打开命令提示符,输入:
set HTTP_PROXY=http://你的代理地址:端口号 set HTTPS_PROXY=http://你的代理地址:端口号
如果代理需要账号密码,格式改成:
set HTTP_PROXY=http://用户名:密码@代理地址:端口号 set HTTPS_PROXY=http://用户名:密码@代理地址:端口号
设置完成后再执行flutter pub get试试。
3. 手动指定包的Git源(仅当必须用旧版本时)
如果一定要保留0.1.0版本,可以直接从Flutter插件的官方仓库拉取这个旧版本:
在pubspec.yaml末尾添加依赖覆盖:
dependency_overrides: android_alarm_manager: git: url: https://github.com/flutter/plugins.git path: packages/android_alarm_manager/android_alarm_manager ref: 0.1.0 # 指定对应版本的标签或者提交哈希
不过还是建议尽量升级,旧版本的bug和兼容性问题会更多。
4. 开启Windows 7的TLS 1.2支持
Windows 7默认的TLS版本较低,而旧包的源可能要求更高的TLS协议,导致请求失败。你可以通过注册表开启TLS 1.2:
- 按Win+R输入
regedit打开注册表编辑器 - 定位到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp - 右键新建DWORD(32位)值,命名为
DefaultSecureProtocols,设置数值数据为0x00000A00(这代表启用TLS 1.2) - 重启电脑后再尝试拉取依赖。
5. 清除Flutter缓存重置状态
有时候缓存文件损坏也会导致奇怪的拉取错误,执行以下命令清理缓存:
flutter clean flutter pub cache repair flutter pub get
先从升级版本开始试,这是最能一劳永逸解决问题的办法,毕竟旧版本的维护早就停止了,后续开发中遇到的问题只会更多。
内容的提问来源于stack exchange,提问作者Fabio Spadaro

