当前位置: 首页 > wzjs >正文

外卖网站建设费用装修公司室内装饰

外卖网站建设费用,装修公司室内装饰,付费推广途径与原因,毕节市网站建设使用jenkins构建AndroidFlutter项目依赖自动升级兼容性问题及Jenkins构建速度慢问题解决 问题1 flutter下载依赖自动升级导致兼容性问题 有个Android项目使用了flutter技术,按照常规执行flutter clean && flutter pub get以后,开发在pubsepec.…

使用jenkins构建Android+Flutter项目依赖自动升级兼容性问题及Jenkins构建速度慢问题解决

问题1 flutter下载依赖自动升级导致兼容性问题

有个Android项目使用了flutter技术,按照常规执行flutter clean && flutter pub get以后,开发在pubsepec.yaml文件定义了shared_preferences版本为^2.1.1, 并且开发上传的pubspec.lock中shared_preferences为2.1.1,shared_preferences_android版本为2.1.4, 但是jenkins下载完代码,编译后,发现pubspec.lock中shared_preferences的版本为2.5.2,并且shared_preferences_android变成了2.4.5,其结果导致编译后报错,引入了一个兼容性的错误: “A problem occurred configuring project ‘:shared_preferences_android’. > Failed to notify project evaluation listener. ”

通过查找资料,发现是flutter clean后导致了pubspec.lock文件发生了变化,flutter根据pubsepec.yaml文件定义了shared_preferences版本为^2.1.1,自动将shared_preferences依赖更新到2.5.2,shared_preferences_android更新到了2.4.5.

具体原理:

在Flutter项目中,pubspec.yaml中定义的依赖版本使用^符号表示允许在兼容范围内自动升级,而pubspec.lock会记录实际下载的具体版本。当执行flutter clean和flutter pub get时,依赖版本可能发生变化,具体原因如下:

版本符号^的作用

shared_preferences: ^2.1.1表示允许使用2.1.1到3.0.0之间的最新兼容版本(如2.5.2)。如果服务器上的包版本更新,执行flutter pub get会拉取符合约束的最新版本,导致pubspec.lock中记录的版本升级。

Jenkins构建时的依赖解析

Jenkins在编译时可能执行了flutter clean(清除缓存)和flutter pub get(重新解析依赖),这会根据pubspec.yaml中的^符号拉取最新的shared_preferences(如2.5.2),同时其子包shared_preferences_android也会升级到对应的版本(如2.4.5)。

未提交或忽略pubspec.lock文件

如果pubspec.lock未被提交到版本控制(如.gitignore中包含该文件),Jenkins会基于pubspec.yaml重新生成pubspec.lock,而本地开发环境可能使用了旧的锁定版本。这会导致不同环境的依赖版本不一致。

解决方案:

固定版本:在pubspec.yaml中写死版本(如shared_preferences: 2.1.1),避免自动升级。
提交pubspec.lock:将pubspec.lock纳入版本控制,确保所有环境使用完全相同的依赖版本。
避免flutter pub upgrade:仅使用flutter pub get,除非明确需要升级依赖。

依赖自动升级问题解决方案

为保证项目的依赖纯净,执行了如下命令

flutter pub cache clean -f
flutter pub get

然后可以在log中看到,jenkins下载了开发指定的pubspec.lock文件中的全部依赖版本,部分日志如下:

  shared_preferences 2.1.1 (2.5.2 available)shared_preferences_android 2.1.4 (2.4.5 available)shared_preferences_foundation 2.5.2 (2.5.4 available)source_span 1.10.0 (1.10.1 available)sqflite 2.3.3+1 (2.4.2 available)

问题2 Jenkins执行flutter pub get速度相比直接命令行执行慢很多倍问题

通过查找deepseek,这个问题跟jenkins的环境有关,解决方案就是直接在jenkins shell中配置如下环境变量:

export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

问题3 jenkins调用gradle插件来编译flutter项目报错

问题原因现在没查清楚,将插件去掉,改为命令行调用gradlew直接构建打包:

cd app
chmod +x gradlew
./gradlew assemble${Env}Release

猜测gradle插件与flutter或者JDK的版本不匹配导致。


文章转载自:

http://SypvWOpa.Lwzgn.cn
http://d7mdVckZ.Lwzgn.cn
http://hV4UXeoN.Lwzgn.cn
http://tjg6wFgz.Lwzgn.cn
http://8oKAtM58.Lwzgn.cn
http://hMCdRhcc.Lwzgn.cn
http://M9rtV5Cg.Lwzgn.cn
http://ORVD044b.Lwzgn.cn
http://bmkQNSJl.Lwzgn.cn
http://gy3bb3IR.Lwzgn.cn
http://RH61JRF5.Lwzgn.cn
http://tFIR4yFh.Lwzgn.cn
http://E7cwJG5O.Lwzgn.cn
http://sb4pPK6c.Lwzgn.cn
http://3IQHsv7m.Lwzgn.cn
http://FROUlLg3.Lwzgn.cn
http://yrx1gFL7.Lwzgn.cn
http://1qwy2zAr.Lwzgn.cn
http://w6GxkpKA.Lwzgn.cn
http://CE3DRTt9.Lwzgn.cn
http://YZiq4JEL.Lwzgn.cn
http://FGp6T0yc.Lwzgn.cn
http://Vj5RmlF3.Lwzgn.cn
http://EzD2x97i.Lwzgn.cn
http://uFPYvuxe.Lwzgn.cn
http://GHZl7JyW.Lwzgn.cn
http://7Evf2lOU.Lwzgn.cn
http://OXq5KJfl.Lwzgn.cn
http://5foNgVMe.Lwzgn.cn
http://HWSul5Px.Lwzgn.cn
http://www.dtcms.com/wzjs/747446.html

相关文章:

  • 网站建设的硬件支持企业网站怎么做才能留住客户
  • phpcms做汽车网站企业公司怎么注册
  • 网站开发 卓优科技软件定制开发公司地址
  • 免费数据查询网站网站后台管理系统页面
  • 搭理彩票网站开发非洲外贸采购商
  • 做什么网站比较简单百度做广告多少钱一天
  • 充值网站分销站怎么做广州网站优化排名
  • 网站建设一般需要什么软件wordpress内容批量替换
  • 联通北京网站备案如何给自己的网站做seo
  • wordpress主题官方网站企业seo
  • 做网页做网站的技术人才宜宾网站建设工作室
  • 电影网站怎么做seo买个网站域名要多少钱一年
  • 淘宝客怎么做自己网站推广微信开发小程序工具
  • 上海网站营销公司thinkphp建站网址
  • dedecms双语网站pytson做网站安全吗
  • WordPress discuz 仿站江阴响应式网站开发
  • 网站解析一般什么时候渠道网站
  • 做网站有没有免费空间分享经济网站怎么建设
  • 做视觉影像网站用什么软件系统免费的网站制作
  • 海口建站平台广州手机建站模板
  • 网站功能描述与分析备案期间怎么做网站
  • 浙江广厦建设职业技术学院网站多用户分销系统一般有哪些
  • 百度收录什么网站wordpress单点登陆
  • 360怎么做网站搜索网站建设的实训报告的实训感受
  • 网上商城网站建设方案网站开发经验总结与教训
  • 百度推广对网站的好处网站域名 文件夹
  • 网站建设培训南宁网站流程
  • 成品网站1688入口wordpress轻量
  • 创建网站收费如何提高alexa排名
  • 深圳精品网站设计洛可可设计公司估值