首页 > 编程语言 >Flutter子工程编译,Ruby升级及Cocoapods安装问题集

Flutter子工程编译,Ruby升级及Cocoapods安装问题集

时间:2023-12-22 16:35:05浏览次数:30  
标签:安装 Ruby preferences Cocoapods ios flutter shared ruby Flutter

背景:工程为iOS原生与Flutter混合开发的工程,在编译Flutter子工程的过程中报了一个错,一度让我以为是ruby与pod的版本不兼容导致了一些奇奇怪怪的问题,随即来回折腾了Ruby环境升级与pod的升级安装。

问题1:flutter子工程执行了flutter pub get,执行flutter build ios --no-codesign时,报了如下错误,下面截取的部分报错信息为关键部分,其实日志已经说的很清楚了。

[!] CocoaPods could not find compatible versions for pod "shared_preferences_foundation":
In Podfile:
FlutterPluginRegistrant (from `../flutter子模块工程文件夹目录/.ios/Flutter/FlutterPluginRegistrant`) was resolved to 0.0.1, which depends on
shared_preferences_foundation

shared_preferences_foundation (from `../flutter子模块工程文件夹目录/.ios/.symlinks/plugins/shared_preferences_foundation/ios`)

Specs satisfying the `shared_preferences_foundation (from `../flutter子模块工程文件夹目录/.ios/.symlinks/plugins/shared_preferences_foundation/ios`), shared_preferences_foundation` dependency were found, but they required a higher minimum deployment target.

解决方案:

此问题发生在flutter子工程依赖插件shared_preferences: ^2.0.15,执行flutter pub get命令后,生成的.ios文件下platform :ios, '9.0' 默认为9.0,而 flutter子模块工程文件夹目录/.ios/.symlinks/plugins/shared_preferences_foundation/ios/shared_preferences_foundation.podspec中的s.ios.deployment_target = '11.0',两者发生了冲突,所以一定要将.ios文件中的改为11.0,即platform :ios, '11.0',之后再执行flutter build ios --no-codesign即正常。

 

问题2:安装ruby 3.0.0时报错,具体错误信息不贴了,报错原因跟openssl版本过高有关,openssl版本超过3.0时,ruby版本也需要大于3.0.0。

解决方案:安装rvm -> 再安装ruby -> 最后安装cocoapods

  • 安装rvm:curl -L get.rvm.io | bash -s stable
  • 安装指定版本的ruby:rvm install ruby-3.2.1 --with-openssl-dir=`brew --prefix openssl`(查看可支持安装的ruby版本:rvm list known,如果显示最高版本是3.0.0,此时又想安装大于3.0.0版本的ruby,不要使用命令:rvm install ruby/rvm install ruby --latest,实操发现默认会安装3.0.0版本,如果openssl版本超过3.0,此时会报错),安装完后通过ruby --version查看当前版本号,如果不是想要的,通过命令将最新版本的ruby设置为默认版本:rvm use ruby -default
  • 安装pod:sudo gem uninstall cocoapods && sudo gem install cocoapods,如果需要安装知道pod版本: sudo gem install cocoapods v 版本号(查看pod安装的历史版本:gem list/sudo gem list),之前的.cocoapods可以不用删除(重新下载太好使,代价巨大,~/Library/Caches/CocoaPods/Podsc此目录下的三方库缓存文件也可以提前进行备份),防止卸载的时候被删,可以先改个名,安装完成后再改回来,如果repo需要升级,执行命令:pod repo update --verbose

备注:ruby卸载后,pod需要重新安装。

 

标签:安装,Ruby,preferences,Cocoapods,ios,flutter,shared,ruby,Flutter
From: https://www.cnblogs.com/JoelZeng/p/17921786.html

相关文章

  • Flutter 隐式动画
    通过几行代码就可以实现隐式动画,由于隐式动画背后的实现原理和繁琐的操作细节都被隐去了,所以叫隐式动画,FLutter中提供的[AnimatedContainer]、[AnimatedPadding]、[AnimatedPositioned.AnimatedOpacity]、[AnimatedDefaultTextStyle]、[AnimatedSwitcher]都属于隐式动画隐式动画......
  • Android应用开发长按拖拽-Flutter的LongPressDraggable控件回调函数onDraggableCancel
    onDraggableCanceled介绍LongPressDraggable的onDraggableCanceled回调在拖动被取消时触发。拖动可能会被取消,例如用户在拖动开始后移动了太快或在放置之前取消了拖动。onDraggableCanceled的使用以下是如何使用onDraggableCanceled的示例:LongPressDraggable<int>(//......
  • Flutter AnimatedList 实现动态列表
    import'dart:async';import'package:flutter/material.dart';finalGlobalKey_globalKey=GlobalKey();classMyAnimatedListextendsStatelessWidget{constMyAnimatedList({super.key});@overrideWidgetbuild(BuildContextcont......
  • Flutter 编译是pod intsall github 资源下载失败
    在fluterr编译报错然后显示github.xxxxx访问超时处理办法podinstall主要是读取profile文件platform:ios,'9.0'target'YourAppName'douse_frameworks!#这是安装依赖位置pod'SomeDependency'#添加其他依赖项...end想办法下载到github的文......
  • Flutter Key 以及通过Key获取子组件的状态和方法
    import'package:flutter/material.dart';classColorItem{GlobalKeykey;Colorcolor;//设置子组件的key,这里用的GlobalKey,用来后面获取子组件//如果不用获取子组件,也可以用ValuekeyColorItem({requiredthis.color}):key=GlobalKey();}classFlutterKe......
  • 想要深入学习Flutter,这篇文章让你一步到位
    前言Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面一份代码可以同时生成iOS和Android两个高性能、高保真的应用程序Flutter目标就是使开发人员能够交付在不同平台上都感觉自然流畅的高性能应用程序,并且兼容滚动行为、排版、图标等方面的......
  • iOS项目中加入flutter
    新建一个iOS项目Test在iOS同级目录下建一个flutter modulefluttercreate--templatemodulemy_flutterpodfile编写如下#Uncommentthenextlinetodefineaglobalplatformforyourproject#platform:ios,'9.0'target'Test'do#Commentthenextl......
  • Flutter 使用PageView 自定义无限轮播
    import'package:flutter/material.dart';int_getRealIndex(intindex,intlength){returnindex>=length?index%length:index;}classInfinitySliderextendsStatefulWidget{finalintinitialPage;finalList<Widget>items;......
  • Flutter video_player播放视频
    1、pubspec.yaml文件引入插件dependencies:...video_player:^2.8.12、页面使用(这里我是宽度百分百,高度自适应了)lateVideoPlayerController_controller;Container(width:MediaQuery.of(context).size.width,child:AspectRatio(aspectRatio:_......
  • Ruby 版本升级
    一、升级原因在开发shopifyapp的时候,提示我当前的Ruby版本不支持(如下图),所以需要升级Ruby。由于Ruby中的一些Gem依赖于OpenSSL库,所以更改Ruby版本,还需要安装正确版本的OpenSSL。下面的升级过程会先安装OpenSSL1.1,再安装Ruby3.2。二、升级过程1、降级OpenSSL......