flutter错误 无效的`Podfile`文件: nil无法隐式转换为字符串。我已经在讨论中搜索过,但我似乎无法解决这个问题。
flutter错误 无效的`Podfile`文件: nil无法隐式转换为字符串。我已经在讨论中搜索过,但我似乎无法解决这个问题。
这是我收到的错误。
我尝试了flutter clean并更改了一些行的语法,但我对dart和flutter还是很陌生,所以不太确定。我也重新安装了cocoapods和ruby,但是我收到了相同的错误。我还确保将ruby更新到了最新版本。
[!] 无效的`Podfile`文件:无法将nil隐式转换为String。 # 来自 /Users/(name)/Downloads/Projects/doctor_consultation_app/ios/Podfile:57 # ------------------------------------------- # unless File.exist?(copied_framework_path) > FileUtils.cp(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir) # end # -------------------------------------------
这是我的pod文件。
# 取消注释此行以为您的项目定义全局平台 # platform :ios, '9.0' # CocoaPods分析以同步方式发送网络统计数据,影响flutter构建延迟。 ENV['COCOAPODS_DISABLE_STATS'] = 'true' project 'Runner', { 'Debug' => :debug, 'Profile' => :release, 'Release' => :release, } def parse_KV_file(file, separator='=') file_abs_path = File.expand_path(file) if !File.exists? file_abs_path return []; end generated_key_values = {} skip_line_start_symbols = ["#", "/"] File.foreach(file_abs_path) do |line| next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } plugin = line.split(pattern=separator) if plugin.length == 2 podname = plugin[0].strip() path = plugin[1].strip() podpath = File.expand_path("#{path}", file_abs_path) generated_key_values[podname] = podpath else puts "无效的插件规范:#{line}" end end generated_key_values end target 'Runner' do use_frameworks! use_modular_headers! # Flutter Pod copied_flutter_dir = File.join(__dir__, 'Flutter') copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework') copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec') unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path) # 将Flutter.framework和Flutter.podspec复制到Flutter/,以便在xcode后端脚本尚未运行时有东西进行链接。 # 该脚本将根据当前选择的Xcode配置复制正确的调试/配置/发布版本的框架。 # 如果dylib不存在,CocoaPods在pod install之前(在任何构建阶段生成之前)将不会嵌入框架。 generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig') unless File.exist?(generated_xcode_build_settings_path) raise "Generated.xcconfig必须存在。如果您手动运行pod install,请确保首先执行flutter pub get" end generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path) cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR']; unless File.exist?(copied_framework_path) FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir) end unless File.exist?(copied_podspec_path) FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir) end end # 保持pod路径相对,以便可以将其检入Podfile.lock。 pod 'Flutter', :path => 'Flutter' # 插件Pods # 准备符号链接文件夹。我们使用符号链接来避免Podfile.lock引用开发人员机器上的绝对路径。 system('rm -rf .symlinks') system('mkdir -p .symlinks/plugins') plugin_pods = parse_KV_file('../.flutter-plugins') plugin_pods.each do |name, path| symlink = File.join('.symlinks', 'plugins', name) File.symlink(path, symlink) pod name, :path => File.join(symlink, 'ios') end end post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['ENABLE_BITCODE'] = 'NO' end end end
问题原因:在更新Mac操作系统为BigSur并使用Ruby后,出现了这个问题。
解决方法:通过执行命令rm -rf ios
和flutter create .
解决。然后修复新的ios文件中的一些更改。
警告:如果在现有应用程序上使用此方法,它将删除您的iOS文件夹,但您可能在其中有一些自定义设置。因此,您应该将您的提交添加到新文件中。请不要在现有应用程序上使用此方法,这会删除我的iOS文件夹,并且flutter create命令将创建一个新项目。幸运的是,我使用了git,并且可以回滚到我的提交。
对于现有应用程序,您需要在解决方案中添加“警告”文本。
您需要在脚本中设置项目路径,您还可以指定要创建的平台,例如flutter create --platforms=ios [PROJECT_PATH]
。将[PROJECT_PATH]替换为Flutter项目的实际路径。