Cele wdrażania symulatora systemu iOS są ustawione na 7,0, ale zakres obsługiwanej wersji docelowej wdrożenia dla tej platformy to od 8,0 do 12,1

170

Otrzymuję poniższy komunikat ostrzegawczy w moim Xcode 10.1.

Cele wdrożenia symulatora systemu iOS są ustawione na 7,0, ale zakres obsługiwanej wersji docelowej wdrożenia dla tej platformy to od 8,0 do 12,1.

Mój symulator działa w wersji 12.1 Xcode 10.1

Zaktualizowałem plik pod.

wprowadź opis obrazu tutaj

Mój cel wdrożenia to 9.0

wprowadź opis obrazu tutaj

W moim celu

wprowadź opis obrazu tutaj

iOS
źródło
Proszę zweryfikować cel na user-images.githubusercontent.com/5786033/… , Edycja: W ramach
Vinaykrishnan
@ Vinaykrishnan, sprawdziłem, że jest 9.0
iOS
4
Ci goście mieli ten sam problem, sprawdź, czy to może ci pomóc, github.com/flutter/flutter/issues/22123 i github.com/CocoaPods/CocoaPods/issues/8069 . Otwórz swój, Xcodeaw Filelewym górnym rogu obok ikony Apple, a następnie otwórz Workspace Settingsi zmień system kompilacji na „Legacy Build System”. A jeśli jeszcze tego nie wypróbowałeś, stackoverflow.com/a/52552878/2323806
Vinaykrishnan,

Odpowiedzi:

237

Możesz skonfigurować plik podfile tak, aby automatycznie dopasował cel wdrożenia wszystkich podfile do bieżącego celu wdrożenia projektu w następujący sposób:

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
Tao-Nhan Nguyen
źródło
dzięki za świetną odpowiedź! Ciekawe - czy byłoby możliwe zautomatyzowanie czwartego wiersza „9.0” ... tak, aby po prostu pobierał cel wdrożenia z głównego projektu?
Fattie
9
Co jeśli masz już inny hak po instalacji? Pojawia się błąd wskazujący, że wielokrotne instalacje po instalacji nie są obsługiwane
George Salamanca
To nie wydaje się działać, jeśli minimalny cel wdrożenia poda jest już wyższy niż wymuszony. Musielibyśmy więc wziąć pod uwagę oryginalną wartość.
Grigory Entin
1
@GeorgeSalamanca, możesz umieścić w tym samym bloku post_install
Simon Hansen
5
@Fattie Wierzę, że możesz po prostu zrobićconfig.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
rmp251
97

Problem dotyczy docelowej wersji systemu iOS wdrożenia plików podów, a nie docelowej wersji systemu iOS wdrożenia projektu, więc musisz zmienić wersję wdrożenia systemu iOS dla swoich podów na dowolną nowszą niż 8.0, aby to zrobić, otwórz obszar roboczy projektu i wykonaj następujące czynności:

1- Kliknij strąki.

2- Wybierz każdy projekt i cel i kliknij ustawienia kompilacji.

3- W sekcji Wdrożenie zmień docelową wersję systemu iOS na inną niż 8.0 (lepiej wypróbować tę samą wersję projektu).

4- Powtórz to dla każdego innego projektu w swoich podach, a następnie uruchom aplikację.

zobacz zdjęcie po szczegóły wprowadź opis obrazu tutaj

Ahmed El-Bermawy
źródło
52
Projekt Pods jest generowany automatycznie. Nie powinieneś z tym zadzierać.
Mihai Damian
2
Nie zadzierałem z kapsułą (chociaż nie znalazłem problemu, ponieważ jest zrobiona przez człowieka ...) Po prostu zmieniłem wersję iOS, która powinna być docelowa, co jest akceptowalne. i jest to lepsze rozwiązanie niż przyjęte, które zmusza cię do zmniejszenia własnej wersji iOS projektu.
Ahmed El-Bermawy
6
Nie twierdzę, że przyjęte rozwiązanie jest lepsze, po prostu edycja wygenerowanych plików to zła praktyka. Żaden plik wygenerowany przez Cocoapods nie powinien być edytowany ręcznie, ponieważ w przyszłości może zostać nadpisany. Jeśli nie podoba Ci się wynik, możesz wprowadzić poprawki z pliku Podfile za pośrednictwem post_install. Te pliki nie powinny być nawet zatwierdzane w repozytorium.
Mihai Damian
1
@Muhammad Na to musi odpowiedzieć sam programista POD, zresztą dla mnie nie zostawiłbym żadnych ostrzeżeń dla mojego projektu z premierą
Ahmed El-Bermawy
1
Możesz wybrać je wszystkie i zmienić na raz
Rami Alloush
47

Iterując po odpowiedzi od Tao-Nhan Nguyen, uwzględniając oryginalną wartość ustawioną dla każdego poda, dostosowując ją tylko wtedy, gdy nie jest większa niż 8,0 ... Dodaj następujące elementy do pliku Podfile:

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
Grigorij Entin
źródło
1
To naprawiło setki ostrzeżeń xcode dla nowo utworzonej natywnej aplikacji
React
Bardzo ładny Grigorij
Tao-Nhan Nguyen
To zadziałało dla mnie.
a_lovelace
42

Zamiast określać miejsce docelowe wdrożenia po instalacji, można usunąć cel wdrożenia, co powoduje, że cel wdrożenia jest dziedziczony z platformy podfile.

Może być konieczne uruchomienie instalacji poda, aby efekt wystąpił.

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
kod trishcode
źródło
40

Jeśli używasz CocoaPods z Xcode 12, prawdopodobnie widziałeś ten błąd:

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.

Dzieje się tak, ponieważ obsługa systemu iOS 8 została porzucona, ale minimalnym celem wdrożenia dla poda jest iOS 8.

Dopóki to nie zostanie naprawione, możesz dodawać następujące elementy do swojego pliku Podfile:

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

Spowoduje to usunięcie celu wdrożenia ze wszystkich podów w projekcie i umożliwi im dziedziczenie celu wdrożenia projektu / obszaru roboczego, który został określony w górnej części Podfile.

Prakhar Prakash Bhardwaj
źródło
czy to jest bezpieczne?
Cublax,
Użyj, installer.pods_project&.targets&.each do |target|jeśli incremental_installationustawiłeś na true.
José
to jest najlepsze rozwiązanie
Lena Bru
15

Jeśli ktoś przyszedł tutaj z powodu problemu natywnego, po prostu usuń folder / build i wpisz react-native run ios

Robinson Silva Junior
źródło
Gdzie jest ten /buildfolder kolego?
Erik Escobedo
./project-root/ios/build
kitsune
Ten katalog nie istniał dla mnie, ale po prostu uruchomiłem cd ios && pod install && cd ..i znowu zaczął działać.
Jimbali
Koleś, jesteś mężczyzną!
Nicky Kouffeld
10

Rozwiązałem ten problem, zmieniłem system kompilacji na Legacy Build SystemzNew Build System

W Xcode v10 + wybierz Plik> Ustawienia projektu

W poprzednim Xcode wybierz opcję Plik> Ustawienia obszaru roboczego

wprowadź opis obrazu tutaj

Zmień Build System na Legacy Build Systemfrom New Build System-> Kliknij Gotowe.

wprowadź opis obrazu tutaj

iOS
źródło
1
Nie jest to już odpowiednie rozwiązanie dla mnie, ponieważ nowy system kompilacji (domyślny) jest wymagany do generowania podglądów SwiftUI :(
Ric Santos,
3
To nie jest prawdziwe rozwiązanie.
smileBot
Powrót do starych systemów nie jest rozwiązaniem
FaultyJuggler
6

Spróbuj wykonać następujące czynności:

  1. Usuń swój plik Podfile.lock
  2. Usuń swój plik Podfile
  3. Zbuduj projekt
  4. Dodaj kod inicjujący z firebase
  5. cd /ios
  6. pod install
  7. uruchom Project

To właśnie zadziałało dla mnie.

Patrick Kelly
źródło
3

Możemy zastosować cel wdrożenia projektu do wszystkich obiektów docelowych. Rozwiązanie rozwiązane przez dodanie poniższego bloku kodu na końcu pliku Podfile:

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

Dziennik wyników:

ostrzeżenie o docelowej wersji wdrożenia podów

Cuong Lam
źródło
Miły! Kolorowy dziennik jest bardzo przydatny
Asaf Pinhassi
1

Jeśli pochodzisz react-nativei napotykasz ten błąd, po prostu zrób to

  1. Otwórz Podfile(Twój projekt> ios> Podfile)
  2. komentarz działa flipper w podfile, jak poniżej
#use_flipper!
 #post_install do |installer|
   #flipper_post_install(installer)
 #end
  1. W IOSfolderze wewnątrz terminala wprowadź to poleceniepod install

tak, to jest nadzieja, że ​​ci się uda

Ugas
źródło
0

dla programistów Cordova mających ten problem

spróbuj ustawić

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

w confix.xml

CGN
źródło
-3

w moim przypadku użyłem obu npm installi yarn installdlatego otrzymałem ten problem, więc aby go rozwiązać, usunąłem pakiet-lock.json i node_modules, a następnie zrobiłem

yarn install
cd ios
pod install

to działało dla mnie

vinit gundeti
źródło