未在ios目录中创建Flutter Podfile和Pods文件夹

时间:2018-07-30 17:52:55

标签: ios flutter

使用向导从Android Studio创建了一个新的flutter项目。

新创建的项目文件夹在ios目录中没有任何Pods文件夹或podfile。

This Flutter.io页面状态(强调我):

  

尽管Flutter项目的iOS文件夹中有一个Podfile ,   仅在添加所需的本机依赖项时使用此选项   每个平台的集成。

我的ios目录中根本没有podfile。

我在另一个问题中发现this comment,这表明在ios模拟器上运行该项目会生成文件,但在sim和设备上运行该项目都不会为我创建任何podfile。

在我错过的新flutter项目创建的ios方面是否有一些步骤?没有podfile,我无法添加特定于ios的依赖项。

flutter doctor的输出:

[✓] Flutter (Channel beta, v0.5.1, on Mac OS X 10.12.6 16G1408, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK 27.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 9.2)
[✓] Android Studio (version 3.1)
[!] VS Code (version 1.25.1)
[✓] Connected devices (1 available)

8 个答案:

答案 0 :(得分:7)

这是我通常要做的:

  1. 进入ios文件夹
  2. 删除PodFile.lock文件
  3. rm -rf豆荚
  4. pod缓存清理--all
  5. pod解体
  6. pod设置
  7. pod安装

您可能还想做

pod回购更新

答案 1 :(得分:2)

flutter:
      plugin:
        platforms:
          ios:
            pluginClass: AppDelegate

您需要将以上几行添加到 pubspec.yaml 中,然后 pub 会自动在 ios 文件夹中生成 Podfile

答案 2 :(得分:1)

最近,我遇到了同样的问题。即使在pubspec.yaml文件中添加依赖项程序包,也不会创建Podfile。最后,我必须在ios目录中手动添加Pod文件,然后发出“ pod解集成”,“ pod安装”和“ pod安装”。

这是我的podfile。您可以尝试:

# Uncomment this line to define a global platform for your project
platform :ios, '9.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

pod 'Firebase/Core'
pod 'FBSDKLoginKit' #optional
pod 'GoogleAnalytics'

def parse_KV_file(file, separator='=')
  file_abs_path = File.expand_path(file)
  if !File.exists? file_abs_path
    return [];
  end
  pods_ary = []
  skip_line_start_symbols = ["#", "/"]
  File.foreach(file_abs_path) { |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)
        pods_ary.push({:name => podname, :path => podpath});
      else
        puts "Invalid plugin specification: #{line}"
      end
  }
  return pods_ary
end

target 'Runner' do
  # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
  # referring to absolute paths on developers' machines.
  use_frameworks! 
  system('rm -rf .symlinks')
  system('mkdir -p .symlinks/plugins')

  # Flutter Pods
  generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig')
  if generated_xcode_build_settings.empty?
    puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first."
  end
  generated_xcode_build_settings.map { |p|
    if p[:name] == 'FLUTTER_FRAMEWORK_DIR'
      symlink = File.join('.symlinks', 'flutter')
      File.symlink(File.dirname(p[:path]), symlink)
      pod 'Flutter', :path => File.join(symlink, File.basename(p[:path]))
    end
  }

  # Plugin Pods
  plugin_pods = parse_KV_file('../.flutter-plugins')
  plugin_pods.map { |p|
    symlink = File.join('.symlinks', 'plugins', p[:name])
    File.symlink(p[:path], symlink)
    pod p[:name], :path => File.join(symlink, 'ios')
  }
end


#pre_install do |installer|
  # workaround for https://github.com/CocoaPods/CocoaPods/issues/3289
 # Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
#end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
      config.build_settings['SWIFT_VERSION'] = '4.2'
    end

    # Peter aded on 8 Oct 2018
    # workaround for https://github.com/CocoaPods/CocoaPods/issues/7463
    #target.headers_build_phase.files.each do |file|
     # file.settings = { 'ATTRIBUTES' => ['Public'] }
    #end

  end
end

此外,我尝试使用Vcode创建一个新的Flutter项目。在pubspec.yaml文件中添加软件包,保存并自动创建podfile,

使用Vcode创建一个新的Flutter项目

  1. 启动VS代码
  2. 调用视图>命令面板...
  3. 输入“ flutter”,然后选择“ Flutter:新建​​项目”操作
  4. 输入项目名称(例如myapp),然后按Enter
  5. 指定放置项目的位置,然后按蓝色的OK(确定) 按钮
  6. 等待项目创建继续,并将main.dart文件添加到 出现
  7. 在pubspec.yaml文件中添加一个程序包并保存。
  8. 应该创建podfile。

答案 3 :(得分:1)

我在 ios 文件夹中找到了 Flutter 工具创建的 Podfile 和 Podfile.lock,但项目的 Xcode 视图中缺少 Pods.xcodeproj。 我打开一个命令行终端,进入 ios 文件夹并运行 吊舱安装 这足以让我修复项目。

答案 4 :(得分:0)

一旦运行flutter build ios,就会在Podfile目录中为您创建Podfile.lockios

请遵循deploy steps官方文档中的步骤。

答案 5 :(得分:0)

我建议您直接转到Flutter软件包并执行 flutter create . 它将自动创建所有丢失的文件,甚至Podfile。 我在项目中使用了此命令,结果非常成功。

答案 6 :(得分:0)

我刚刚创建了一个新项目,但在 Podfile 目录中没有看到 ios/。我需要 Podfile 才能设置 Firebase 集成。尽管 @ncuillery 在评论中指出了这一点,但我认为我应该添加一个答案,因为评论很容易被遗漏!

您所要做的就是向 pubspec.yaml 文件添加依赖项:

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^1.0.2

  firebase_auth: ^1.0.2 # <--- add this line (doesn't have to be firebase_auth)

运行 pub get 以获取依赖项。如果命令成功存在,在终端中你应该看到:

<块引用>

进程结束,退出代码 0

Podfile should 已在运行带有列出的依赖项的命令后创建,然后可以在 ios/Podfile 中找到。

答案 7 :(得分:0)

对我有用的最简单的方法就是这样做:

pod init

在终端