29
votes

Erreur de flottement du fichier `podfile` non valide: aucune conversion implicite de nil en chaîne. J'ai cherché à travers des discussions mais je n'arrive pas à résoudre le problème

C'est l'erreur que je reçois. J'ai essayé de nettoyer le flottement et de changer la syntaxe de certaines lignes, mais je suis nouveau dans Dart et Flutter, donc je ne suis pas vraiment sûr. J'ai également réinstallé les gousses de cacao et le rubis, mais je reçois la même erreur. Je me suis également assuré de mettre à jour Ruby vers la dernière version.

# 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'

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 "Invalid plugin specification: #{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)
    # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.
    # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
    # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.

    generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig')
    unless File.exist?(generated_xcode_build_settings_path)
      raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
    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

  # Keep pod path relative so it can be checked into Podfile.lock.
  pod 'Flutter', :path => 'Flutter'

  # Plugin Pods

  # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
  # referring to absolute paths on developers' machines.
  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

Ceci est mon fichier de pod.

  [!] Invalid `Podfile` file: no implicit conversion of nil into String.
         #  from /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
         #  -------------------------------------------


4 commentaires

Qu'en est-il de nettoyer tout le cache?


De plus, changez-vous le podfile?


Je suis confronté à la même solution s'il vous plaît?


Même problème ici, une solution?


8 Réponses :


6
votes

J'ai le même problème lorsque je met à jour mon Mac -> BigSur et j'utilise Ruby.

et je le résout par rm -rf iOS et Flutter Create.

Corrigez ensuite quelques modifications de fichiers dans les nouveaux iOS

Avertissement !!!

Si vous utilisez sur votre application existante, elle a supprimé votre dossier iOS, mais vous pouvez contenir des paramètres personnalisés. Vous devez donc ajouter votre engagement dans le nouveau fichier !!!


3 commentaires

N'utilisez pas cela sur votre application existante, ce dossier iOS et la commande Flutter Create créera un nouveau projet. Heureusement, j'utilise Git et je pouvais réinitialiser avec mon engagement.


Vous devez ajouter un test "avertissement" dans votre solution pour les applications existantes


Vous devez définir le chemin du projet sur le script, vous pouvez également spécifier le paltform que vous créez, c'est-à-dire Flutter Create --platforms = iOS [project_path] . Remplacez [project_path] par le chemin réel du projet Flutter.



0
votes

Je le résout simplement: copiéed_flutter_dir = file.join (__ dir__, 'flutter') à copied_flutter_dir = file.join ('.', 'flutter') .


0 commentaires

2
votes

J'étais en bêta de la chaîne et j'ai résolu comme ça. Flutter Channel stable et mise à niveau de Flutter


0 commentaires

0
votes

En partageant juste mon expérience avec ce type de problème, il semble que ce soit essentiellement un problème de version de pods. J'ai travaillé sur plusieurs plates-formes hybrides, et il s'avère que toutes les plates-formes sont en difficulté lorsqu'ils se construisent pour iOS. Voici comment je l'ai résolu:

  • J'ai vérifié mon canal de flottement, que ce soit la version bêta ou stable, j'ai trouvé que c'était la version bêta, donc je suis passé dans le canal stable. Les commandes sont Flutter Channel pour voir le canal actif, puis passez à stable si sa version bêta sélectionnée en exécutant la commande Flutter Channel stable
  • Supprimez tous les fichiers de pod / liés générés pour une nouvelle construction. procédez comme suit:
    • Exécuter rm -rf ios / pods
    • Exécuter rm -rf iOS / .SymLinks
    • Exécuter rm -rf ios / flutter / flutter.framework
  • Exécuter Flutter Clean
  • Exécuter cd iOS au cas où vous n'êtes pas dans le dossier iOS.
  • Exécuter cache pod Clean - tout
  • Exécuter Pod Repo Update
  • Exécuter Pod Install
  • Plateforme non commentée: iOS, 'x.0' à partir de podfile à l'intérieur du dossier iOS, et remplacez x par la version actuelle que vous agitez.
  • Exécuter Flutter Build iOS mieux utiliser - Verbose pour voir si d'autres problèmes sont là.

J'espère que cela vous aidera si quelqu'un est resté au même problème. Merci à ces gars.

https://stackoverflow.com/a/64318163/3502024

https://stackoverflow.com/a/65539806/3502024


1 commentaires

Obtenir ce gâchis aussi. Je n'ai rien fait à cet arbre de code dans quelques mois, et maintenant cela. Je jure que cette plate-forme devient de plus en plus fragile chaque jour. Je devais essentiellement faire toutes ces conneries, toutes les suggestions, pour le faire fonctionner et je reçois toujours de nouvelles erreurs d'exécution qui avaient déjà disparu (la chose de filetage que les gens continuent de signaler). Tout ce que je voulais faire était de l'installer sur un autre téléphone que j'avais ici. Aucun code ou dépendance ne change. J'ai bien fonctionné la dernière fois que j'étais ici. Je ne peux pas continuer à soutenir cette plate-forme comme celle-ci.



1
votes

Le fichier POD peut changer en fonction du canal que vous utilisez. Essayez de mettre à jour Flutter

flutter build ios

Supprimer votre fichier de pod et le dossier PODS puis reconstruisez votre projet iOS

flutter channel stable
flutter upgrade


0 commentaires

1
votes

J'ai dû supprimer le podfile et l'ajouter, puis ajouter mes extensions. Maintenant, cela semble fonctionner à nouveau. La plupart du fichier a été supprimé, par exemple le nouveau fichier n'a pas de méthode parse_kv_file .


0 commentaires

45
votes

J'ai obtenu cette erreur lorsque j'ai mis à jour mon SDK Flutter vers le nouveau Flutter 2.0, mais mon projet a été créé avec une version plus ancienne de Flutter SDK (1.22).

l'a corrigé par enlevant le podfile et podfile.lock dans le dossier iOS puis exécuter:

flutter build ios

ou

flutter run


4 commentaires

c'est la réponse +1


Parfait! Merci!


Vous devrez peut-être décomiser la "plate-forme: iOS, '9.0'" pour construire avec succès.


C'est une bonne réponse. Merci mec!



0
votes

pls Assurez-vous de supprimer dans .dart_tool du dossier de la racine du projet,

Ensuite, dans le dossier iOS , essayez Flutter Clean et build Flutter iOS


0 commentaires