Цілі розгортання iOS Simulator встановлені на 7.0, але діапазон підтримуваних цільових версій розгортання для цієї платформи становить 8.0 до 12.1


170

Я отримую це попереджувальне повідомлення нижче у своєму Xcode 10.1.

Цілі розгортання iOS Simulator встановлені на 7.0, але діапазон підтримуваних цільових версій розгортання для цієї платформи становить 8.0 до 12.1.

Мій симулятор ОС в 12.1 Xcode 10.1

І я оновив свій файл pod.

введіть тут опис зображення

Моя ціль розгортання - 9,0

введіть тут опис зображення

У моїй мішені

введіть тут опис зображення


Будь ласка, перевірте ціль у user-images.githubusercontent.com/5786033/… , Редагувати: В рамках
Vinaykrishnan

@ Vinaykrishnan, я перевірив, що це 9.0
iOS

4
У цих хлопців була та сама проблема, перевірте, що це може вам допомогти, github.com/flutter/flutter/issues/22123 та github.com/CocoaPods/CocoaPods/issues/8069 . Відкрийте свій Xcodeі Fileвгорі ліворуч біля піктограми Apple відкрийте Workspace Settingsта змініть систему складання на `Legacy Build System`. І якщо ви ще не пробували це ще stackoverflow.com/a/52552878/2323806
Vinaykrishnan

Відповіді:


237

Ви можете налаштувати свій підфайл так, щоб він автоматично відповідав цілі розгортання всіх підфайлів поточній цілі розгортання проекту, як це:

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

дякую за чудову відповідь! Цікаво - чи можна було б автоматизувати '9.0' на четвертому рядку ... так, щоб він просто брав ціль розгортання з вашого основного проекту ??
Fattie

9
Що робити, якщо у вас вже є інший гачок після встановлення? Я отримую повідомлення про помилку із зазначенням, що багаторазові встановлення не підтримуються
Джордж Саламанка

Здається, це не спрацьовує, якщо мінімальна ціль розгортання стручка вже вища за встановлену. Отже, нам потрібно взяти до уваги вихідне значення.
Григорій Ентін

1
@GeorgeSalamanca, ти можеш помістити в той самий блок post_install
Саймон Хансен,

5
@Fattie Я вірю, що ти можеш просто зробитиconfig.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
rmp251

97

Проблема полягає у цільовій версії iOS для розгортання файлів pod, а не в цільовій версії iOS для розгортання проекту, тому вам потрібно змінити версію iOS для розгортання для ваших підсистем на будь-що вище 8.0, щоб відкрити робочу область проекту та зробити наступне:

1- Клацніть на стручки.

2- Виберіть кожен проект і ціль і натисніть на налаштування збірки.

3- У розділі Розгортання змініть версію цілі розгортання iOS на більш ніж 8.0 (краще спробувати ту саму версію проекту).

4- Повторіть це для кожного іншого проекту у ваших стручках, а потім запустіть програму.

детальніше дивіться на фото введіть тут опис зображення


52
Проект Pods створюється автоматично. Не варто з цим возитися.
Mihai Damian

2
Я не возився з стручком (хоча я не виявив жодної проблеми, оскільки це зроблено людиною ..), я просто змінив версію iOS, щоб вона була націлена, що є прийнятним. і це краще рішення, ніж прийняте, яке змушує зменшити власну версію iOS проекту.
Ахмед Ель-Бермаві

6
Я не кажу, що прийняте рішення є кращим, просто редагування сформованих файлів є поганою практикою. Будь-який файл, створений Cocoapods, не слід редагувати вручну, оскільки він може бути перезаписаний у майбутньому. Якщо вам не подобається вихід, ви можете внести корективи з Підфайлу через post_install. Ці файли не слід навіть фіксувати у вашому репо.
Mihai Damian

1
@Muhammad На це повинен відповісти сам розробник POD, у будь-якому випадку для мене я не залишу жодних попереджень щодо свого проекту з виходом
Ахмед Ель-Бермаві

1
Ви можете вибрати їх усіх і змінити відразу
Rami Alloush

47

Перебираючи відповідь від Tao-Nhan Nguyen, враховуючи вихідне значення, встановлене для кожного стручка, коригуючи його, лише якщо воно не перевищує 8,0 ... Додайте до підфайлу таке:

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
Це виправило 100 попереджень xcode для нещодавно створеного рідного додатка для реагування
baskInEminence

Дуже приємний Григорій
Тао-Нхан Нгуєн

Це спрацювало для мене.
a_lovelace

42

Замість того, щоб вказувати ціль розгортання в post post install, ви можете видалити ціль розгортання pod, що спричиняє успадкування цілі розгортання від платформи podfile.

Можливо, вам доведеться запустити установку pod, щоб ефект набув ефекту.

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

Якщо ви використовуєте CocoaPods з Xcode 12, то ви, мабуть, бачили цю помилку:

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.

Це відбувається через те, що підтримку iOS 8 було припинено, але мінімальною метою розгортання для під є iOS 8.

Поки це не виправлено, ви можете додати до свого підфайлу:

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

Це видалить ціль розгортання з усіх стручків у вашому проекті і дозволить їм успадкувати ціль розгортання проекту / робочої області, яка була вказана у верхній частині підфайлу.


чи безпечно це робити?
Cublax,

Використовуйте, installer.pods_project&.targets&.each do |target|якщо ви incremental_installationвстановили значення true.
Хосе

це найкраще рішення
Лена Бру

15

Якщо хтось прийшов сюди з рідної проблеми, просто видаліть папку / build і введіть react-native run ios


Де знаходиться ця /buildпапка, колега?
Ерік Ескобедо

./project-root/ios/build
kitsune

Цей каталог для мене не існував, але я просто запустив, cd ios && pod install && cd ..і він знову запрацював.
Джимбалі

Чувак ти той чоловік!
Nicky Kouffeld

10

Я вирішив цю проблему, змінив систему побудови на Legacy Build SystemзNew Build System

У Xcode v10 + виберіть Файл> Налаштування проекту

У попередньому Xcode виберіть Файл> Налаштування робочої області

введіть тут опис зображення

Змініть систему побудови на Legacy Build Systemз New Build System-> Клацніть Готово.

введіть тут опис зображення


1
Для мене це вже не підходяще рішення, оскільки для створення попереднього перегляду SwiftUI потрібна система нової збірки (за замовчуванням) :(
Рік Сантос,

3
Це не реальне рішення.
посмішка,

Повернення до старих систем не є виправленням
FaultyJuggler

6

Спробуйте виконати такі дії:

  1. Видаліть свій Podfile.lock
  2. Видаліть свій Podfile
  3. Проект побудови
  4. Додайте код ініціалізації з Firebase
  5. cd /ios
  6. pod install
  7. запустити проект

Це те, що мені вдалося.


3

Ми можемо застосувати ціль розгортання проекту до всіх цільових модулів. Вирішено шляхом додавання цього кодового блоку нижче до кінця вашого підфайлу:

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

Журнал результатів:

виправити попередження цільової версії розгортання стручків


Приємно! Кольоровий журнал дуже корисний
Асаф Пінхассі

1

Якщо ви походите з react-nativeцієї помилки і просто стикаєтесь, просто зробіть це

  1. Відкрийте Podfile(ваш проект> ios> Podfile)
  2. функції фліппера коментарів у підфайлі, як показано нижче
#use_flipper!
 #post_install do |installer|
   #flipper_post_install(installer)
 #end
  1. У терміналі всередині IOSпапки введіть цю командуpod install

так, це сподіваюся, це працює для вас


0

для розробників Кордова, що мають цю проблему

спробуйте встановити

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

у confix.xml


-3

у моєму випадку я використовував обидва, npm installі yarn installсаме тому я отримав цю проблему, щоб вирішити це, я видалив package-lock.json та node_modules, а потім я зробив

yarn install
cd ios
pod install

це спрацювало для мене

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.