Die Bereitstellungsziele für iOS Simulator sind auf 7.0 festgelegt, der Bereich der unterstützten Bereitstellungszielversionen für diese Plattform liegt jedoch zwischen 8.0 und 12.1


153

Ich erhalte die folgende Warnmeldung in meinem Xcode 10.1.

Die Bereitstellungsziele für iOS Simulator sind auf 7.0 festgelegt, der Bereich der unterstützten Bereitstellungszielversionen für diese Plattform liegt jedoch zwischen 8.0 und 12.1.

Mein Simulator läuft in 12.1 Xcode 10.1

Und ich habe meine Pod-Datei aktualisiert.

Geben Sie hier die Bildbeschreibung ein

Mein Bereitstellungsziel ist 9.0

Geben Sie hier die Bildbeschreibung ein

In meinem Ziel

Geben Sie hier die Bildbeschreibung ein


Bitte überprüfen Sie das Ziel in den user-images.githubusercontent.com/5786033/… , Bearbeiten: Im Framework
Vinaykrishnan

@ Vinaykrishnan, ich habe überprüft, es ist 9.0
iOS

4
Diese Jungs hatten das gleiche Problem, überprüfen Sie, ob dies Ihnen helfen könnte, github.com/flutter/flutter/issues/22123 und github.com/CocoaPods/CocoaPods/issues/8069 . Öffnen Sie Ihr Xcodeund es befindet sich Fileoben links neben dem Apple-Symbol. Öffnen Sie dann Workspace Settingsdas Build-System und ändern Sie es in "Legacy Build System". Und wenn Sie dies noch nicht versucht haben stackoverflow.com/a/52552878/2323806
Vinaykrishnan

Antworten:


205

Sie können Ihre Poddatei so einrichten, dass das Bereitstellungsziel aller Poddateien automatisch wie folgt mit Ihrem aktuellen Projektbereitstellungsziel übereinstimmt:

post_install do |pi|
    pi.pods_project.targets.each do |t|
      t.build_configurations.each do |config|
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
      end
    end
end

danke für die tolle antwort! Neugierig - wäre es möglich, die '9.0' in Zeile vier zu automatisieren ... so dass nur das Bereitstellungsziel von Ihrem Hauptprojekt übernommen wird?
Fattie

8
Was ist, wenn Sie bereits einen anderen Post-Installations-Hook haben? Ich erhalte eine Fehlermeldung, dass mehrere Post-Installationen nicht unterstützt werden
George Salamanca

Dies scheint nicht zu funktionieren, wenn das Mindestbereitstellungsziel eines Pods bereits höher ist als das erzwungene. Wir müssten also den ursprünglichen Wert berücksichtigen.
Grigory Entin

1
@ GeorgeSalamanca, Sie können in den gleichen post_install-Block setzen
Simon Hansen

4
@ Fattie Ich glaube, Sie können nur tunconfig.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
rmp251

88

Das Problem liegt in der Bereitstellungsziel-iOS-Version Ihrer Pod-Dateien und nicht in der iOS-Version Ihres Projektbereitstellungsziels. Sie müssen daher die iOS-Bereitstellungsversion für Ihre Pods auf einen höheren Wert als 8.0 ändern. Öffnen Sie dazu Ihren Projektarbeitsbereich und gehen Sie wie folgt vor:

1- Klicken Sie auf Pods.

2- Wählen Sie jedes Projekt und Ziel aus und klicken Sie auf Build-Einstellungen.

3- Ändern Sie im Abschnitt Bereitstellung die iOS-Bereitstellungszielversion auf mehr als 8.0 (versuchen Sie besser dieselbe Projektversion).

4- Wiederholen Sie diesen Vorgang für jedes andere Projekt in Ihren Pods und führen Sie dann die App aus.

Einzelheiten finden Sie auf dem Foto Geben Sie hier die Bildbeschreibung ein


45
Das Pods-Projekt wird automatisch generiert. Du solltest dich nicht damit anlegen.
Mihai Damian

2
Ich habe mich nicht mit dem Pod angelegt (obwohl ich kein Problem damit gefunden habe, da es von Menschen gemacht wurde.) Ich habe nur die Version des iOS geändert, auf die es abzielen soll, was akzeptabel ist. und dies ist eine bessere Lösung als die akzeptierte, die Sie dazu zwingt, Ihre eigene Projekt-iOS-Version zu verringern.
Ahmed El-Bermawy

6
Ich sage nicht, dass die akzeptierte Lösung besser ist, nur dass das Bearbeiten generierter Dateien eine schlechte Praxis ist. Von Cocoapods generierte Dateien sollten nicht manuell bearbeitet werden, da sie in Zukunft möglicherweise überschrieben werden. Wenn Ihnen die Ausgabe nicht gefällt, können Sie über post_install Anpassungen an der Poddatei vornehmen. Diese Dateien sollten nicht einmal auf Ihrem Repo festgeschrieben werden.
Mihai Damian

1
@ Muhammad Es muss vom POD-Entwickler selbst beantwortet werden, trotzdem würde ich für mich keine Warnungen für mein Projekt mit Veröffentlichung hinterlassen
Ahmed El-Bermawy

1
Sie können alle auswählen und gleichzeitig ändern
Rami Alloush

40

Durchlaufen der Antwort von Tao-Nhan Nguyen, wobei der ursprünglich für jeden Pod festgelegte Wert berücksichtigt und nur angepasst wird, wenn er nicht größer als 8,0 ist ... Fügen Sie der Pod-Datei Folgendes hinzu:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      if Gem::Version.new('8.0') > Gem::Version.new(config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'])
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '8.0'
      end
    end
  end
end

1
Dadurch wurden Hunderte von Xcode-Warnungen für eine neu erstellte native
React-

Sehr schöne Grigory
Tao-Nhan Nguyen

1
Dies sollte die aktuell akzeptierte / Top-Antwort sein.
Nick

33

Anstatt ein Bereitstellungsziel in der Pod-Nachinstallation anzugeben, können Sie das Pod-Bereitstellungsziel löschen, wodurch das Bereitstellungsziel von der Poddatei-Plattform geerbt wird.

Möglicherweise müssen Sie die Pod-Installation ausführen, damit der Effekt erzielt wird.

platform :ios, '12.0'

  post_install do |installer|
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
      end
    end
  end

29

Wenn Sie CocoaPods mit Xcode 12 verwenden, haben Sie wahrscheinlich diesen Fehler gesehen:

The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.

Dies geschieht, weil die Unterstützung für iOS 8 eingestellt wurde, das Mindestbereitstellungsziel für den Pod jedoch iOS 8 ist.

Bis dies behoben ist, können Sie Ihrem Podfile Folgendes hinzufügen:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
    end
  end
end

Dadurch wird das Bereitstellungsziel aus allen Pods in Ihrem Projekt entfernt, und sie können das oben in Podfile angegebene Projekt- / Arbeitsbereich-Bereitstellungsziel erben.


ist das sicher?
Cublax

1
@ Cublax Ja, es ist sicher und eine praktikable Lösung :)
Prakhar Prakash Bhardwaj

Verwenden installer.pods_project&.targets&.each do |target|Sie diese Option, wenn Sie incremental_installationtrue festgelegt haben.
José

Dies ist die beste Lösung
Lena Bru

14

Wenn jemand von einem nativen Problem hierher gekommen ist, löschen Sie einfach den Ordner / build und geben Sie ein react-native run ios


Wo befindet sich dieser /buildOrdner, Kollege?
Erik Escobedo

./project-root/ios/build
Kitsune

10

Ich habe dieses Problem gelöst und das Build-System auf Legacy Build Systemvon geändertNew Build System

Wählen Sie in Xcode v10 + Datei> Projekteinstellungen

Wählen Sie im vorherigen Xcode Datei> Arbeitsbereichseinstellungen

Geben Sie hier die Bildbeschreibung ein

Ändern Sie das Build-System in Legacy Build Systemvon New Build System-> Klicken Sie auf Fertig.

Geben Sie hier die Bildbeschreibung ein


1
Dies ist für mich keine geeignete Lösung mehr, da das neue Build-System (Standard) erforderlich ist, um SwiftUI-Vorschauen zu generieren :(
Ric Santos

3
Dies ist keine echte Lösung.
smileBot

Das Zurücksetzen auf alte Systeme ist keine Lösung
FaultyJuggler

4

Versuchen Sie diese Schritte:

  1. Löschen Sie Ihre Podfile.lock
  2. Löschen Sie Ihre Poddatei
  3. Projekt erstellen
  4. Fügen Sie den Initialisierungscode aus der Firebase hinzu
  5. cd /ios
  6. pod install
  7. Führen Sie Project aus

Das hat bei mir funktioniert.


3

Wir können das Projektbereitstellungsziel auf alle Pods anwenden. Behoben durch Hinzufügen dieses Codeblocks unten am Ende Ihrer Poddatei:

post_install do |installer|
  fix_deployment_target(installer)
end

def fix_deployment_target(installer)
  return if !installer
  project = installer.pods_project
  project_deployment_target = project.build_configurations.first.build_settings['IPHONEOS_DEPLOYMENT_TARGET']

  puts "Make sure all pods deployment target is #{project_deployment_target.green}"
  project.targets.each do |target|
    puts "  #{target.name}".blue
    target.build_configurations.each do |config|
      old_target = config.build_settings['IPHONEOS_DEPLOYMENT_TARGET']
      new_target = project_deployment_target
      next if old_target == new_target
      puts "    #{config.name}: #{old_target.yellow} -> #{new_target.green}"
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = new_target
    end
  end
end

Ergebnisprotokoll:

Behebung der Warnung zur Pods-Bereitstellungszielversion


Nett! Das farbige Protokoll ist sehr nützlich
Asaf Pinhassi

-1

für Cordova-Entwickler mit diesem Problem

versuche zu setzen

<preference name="deployment-target" value="8.0" />

in confix.xml


-1

In meinem Fall habe ich beide verwendet npm installund yarn installdeshalb habe ich dieses Problem bekommen. Um dies zu lösen, habe ich package-lock.json und node_modules entfernt und dann habe ich es getan

yarn install
cd ios
pod install

es hat bei mir funktioniert

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.