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


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

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


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

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

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.


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


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


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.


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


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


0

dla programistów Cordova mających ten problem

spróbuj ustawić

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

w confix.xml


-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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.