Цілі розгортання 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.