Mục tiêu triển khai Trình mô phỏng iOS được đặt thành 7.0, nhưng phạm vi phiên bản mục tiêu triển khai được hỗ trợ cho nền tảng này là 8.0 đến 12.1


153

Tôi nhận được thông báo cảnh báo dưới đây trong Xcode 10.1 của mình.

Mục tiêu triển khai Trình mô phỏng iOS được đặt thành 7.0, nhưng phạm vi phiên bản mục tiêu triển khai được hỗ trợ cho nền tảng này là 8.0 đến 12.1.

Hệ điều hành giả lập của tôi trong 12.1 Xcode 10.1

Và tôi đã cập nhật tệp nhóm của mình.

nhập mô tả hình ảnh ở đây

Mục tiêu triển khai của tôi là 9.0

nhập mô tả hình ảnh ở đây

Trong mục tiêu của tôi

nhập mô tả hình ảnh ở đây


Vui lòng xác minh mục tiêu trong user-images.githubusercontent.com/5786033/… , Chỉnh sửa: Trong khuôn khổ
Vinaykrishnan 15/02/19

@ Vinaykrishnan, tôi đã kiểm tra nó là 9.0
iOS

4
Những người này đã gặp vấn đề tương tự, hãy kiểm tra điều này có thể giúp bạn, github.com/flutter/flutter/issues/22123github.com/CocoaPods/CocoaPods/issues/8069 . Mở của bạn Xcodevà ở Filephía trên bên trái bên cạnh biểu tượng Apple, sau đó mở Workspace Settingsvà thay đổi hệ thống xây dựng thành `Hệ thống xây dựng kế thừa`. Và nếu bạn chưa thử điều này thì stackoverflow.com/a/52552878/2323806
Vinaykrishnan

Câu trả lời:


205

Bạn có thể thiết lập podfile của mình để tự động khớp mục tiêu triển khai của tất cả các podfile với mục tiêu triển khai dự án hiện tại của bạn như sau:

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

cảm ơn vì câu trả lời tuyệt vời! Tò mò - liệu có thể tự động hóa '9.0' trên dòng thứ tư ... để nó chỉ lấy mục tiêu triển khai từ dự án chính của bạn không ??
Fattie

8
Điều gì xảy ra nếu bạn đã có một hook cài đặt bài đăng khác? Tôi gặp lỗi cho biết nhiều lượt cài đặt bài đăng không được hỗ trợ
George Salamanca

Điều này dường như không hoạt động nếu mục tiêu triển khai tối thiểu của nhóm đã cao hơn mục tiêu được thực thi. Vì vậy, chúng tôi cần phải tính đến giá trị ban đầu.
Grigory Entin

1
@GeorgeSalamanca, bạn có thể đặt vào cùng một khối post_install
Simon Hansen

4
@Fattie Tôi tin rằng bạn có thể làm đượcconfig.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
rmp251

88

Vấn đề là trong mục tiêu triển khai tệp nhóm của bạn Phiên bản iOS không có trong mục tiêu triển khai dự án của bạn Phiên bản iOS, vì vậy bạn cần thay đổi phiên bản iOS triển khai cho nhóm của mình cũng như bất kỳ phiên bản nào cao hơn 8.0 để mở không gian làm việc dự án của bạn và thực hiện việc này:

1- Nhấp vào nhóm.

2- Chọn từng dự án và mục tiêu và nhấp vào cài đặt xây dựng.

3- Trong phần Triển khai, hãy thay đổi phiên bản Mục tiêu triển khai iOS thành bất kỳ phiên bản nào lớn hơn 8.0 (tốt hơn nên thử phiên bản dự án tương tự).

4- Lặp lại điều này cho mọi dự án khác trong nhóm của bạn, sau đó chạy ứng dụng.

xem ảnh để biết chi tiết nhập mô tả hình ảnh ở đây


45
Dự án Pods được tạo tự động. Bạn không nên gây rối với nó.
Mihai Damian

2
Tôi không gây rối với nhóm (mặc dù tôi không thấy có vấn đề gì khi làm như vậy vì nó do con người tạo ra ..) Tôi chỉ thay đổi phiên bản iOS mà nó nên được nhắm mục tiêu, điều này có thể chấp nhận được. và đây là giải pháp tốt hơn giải pháp được chấp nhận buộc bạn phải giảm phiên bản iOS dự án của riêng mình.
Ahmed El-Bermawy

6
Tôi không nói rằng giải pháp được chấp nhận là tốt hơn, chỉ là việc chỉnh sửa các tệp đã tạo là một phương pháp không tốt. Không nên chỉnh sửa bất kỳ tệp nào do Cocoapods tạo theo cách thủ công vì tệp có thể bị ghi đè trong tương lai. Nếu bạn không thích đầu ra, bạn có thể thực hiện các điều chỉnh từ Podfile thông qua post_install. Những tệp này thậm chí không nên được cam kết trên repo của bạn.
Mihai Damian

1
@Muhammad Nó phải được trả lời từ chính nhà phát triển POD, dù sao đối với tôi, tôi sẽ không để lại bất kỳ cảnh báo nào cho dự án của mình khi phát hành
Ahmed El-Bermawy

1
Bạn có thể chọn tất cả chúng và thay đổi cùng một lúc
Rami Alloush

40

Lặp lại câu trả lời của Tao-Nhan Nguyen, tính toán giá trị ban đầu được đặt cho mỗi nhóm, chỉ điều chỉnh nó nếu nó không lớn hơn 8,0 ... Thêm phần sau vào 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
Điều này đã khắc phục 100 cảnh báo xcode cho một ứng dụng gốc phản ứng mới được tạo
baskInEminence

Grigory rất hay
Tao-Nhan Nguyen

1
Đây phải là câu trả lời được chấp nhận / hàng đầu hiện nay.
Nick

33

Thay vì chỉ định mục tiêu triển khai trong cài đặt pod post, bạn có thể xóa mục tiêu triển khai nhóm, điều này khiến mục tiêu triển khai được kế thừa từ nền tảng podfile.

Bạn có thể cần chạy cài đặt pod để hiệu ứng diễn ra.

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

Nếu bạn đang sử dụng CocoaPods với Xcode 12, thì có thể bạn đã gặp lỗi này:

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.

Điều này đang xảy ra vì hỗ trợ cho iOS 8 đã bị loại bỏ, nhưng mục tiêu triển khai tối thiểu cho nhóm là iOS 8.

Cho đến khi điều này được khắc phục, bạn có thể thêm phần sau vào Podfile của mình:

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

Điều này sẽ loại bỏ mục tiêu triển khai khỏi tất cả các nhóm trong dự án của bạn và cho phép chúng kế thừa mục tiêu triển khai dự án / không gian làm việc đã được chỉ định ở đầu Podfile.


làm như vậy có an toàn không?
Cublax

1
@Cublax vâng, nó an toàn và là một giải pháp khả thi :)
Prakhar Prakash Bhardwaj

Sử dụng installer.pods_project&.targets&.each do |target|nếu bạn đã incremental_installationđặt thành true.
José

đây là giải pháp tốt nhất
Lena Bru

14

Nếu bất kỳ ai đến đây từ vấn đề gốc phản ứng, chỉ cần xóa thư mục / build và nhập react-native run ios


/buildThư mục này nằm ở đâu vậy đồng nghiệp?
Erik Escobedo

./project-root/ios/build
kitsune

10

Tôi đã giải quyết vấn đề này, tôi đã thay đổi hệ thống xây dựng thành Legacy Build SystemtừNew Build System

Trong Xcode v10 +, chọn Tệp> Cài đặt Dự án

Trong Xcode trước, chọn Tệp> Cài đặt không gian làm việc

nhập mô tả hình ảnh ở đây

Thay đổi Hệ thống xây dựng thành Legacy Build Systemtừ New Build System-> Nhấp vào Xong.

nhập mô tả hình ảnh ở đây


1
Đây không còn là giải pháp phù hợp với tôi nữa vì Hệ thống xây dựng mới (Mặc định) được yêu cầu để tạo bản xem trước SwiftUI :(
Ric Santos

3
Đây không phải là một giải pháp thực sự.
smileBot

Hoàn nguyên về hệ thống cũ không phải là cách khắc phục
FaultyJuggler

4

Hãy thử các bước sau:

  1. Xóa Podfile.lock của bạn
  2. Xóa Podfile của bạn
  3. Xây dựng dự án
  4. Thêm mã khởi tạo từ firebase
  5. cd /ios
  6. pod install
  7. chạy dự án

Đây là những gì đã làm việc cho tôi.


3

Chúng tôi có thể áp dụng mục tiêu triển khai dự án cho tất cả mục tiêu nhóm. Giải quyết bằng cách thêm khối mã này bên dưới vào cuối Podfile của bạn:

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

Nhật ký kết quả:

sửa lỗi cảnh báo phiên bản mục tiêu triển khai nhóm


Đẹp! Nhật ký màu rất hữu ích
Asaf Pinhassi

-1

cho các nhà phát triển cordova gặp sự cố này

cố gắng thiết lập

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

trong confix.xml


-1

trong trường hợp của tôi, tôi đã sử dụng cả hai npm installyarn installđó là lý do tại sao tôi gặp sự cố này, vì vậy để giải quyết vấn đề này, tôi đã xóa package-lock.json và node_modules và sau đó tôi đã

yarn install
cd ios
pod install

nó đã làm việc cho tôi

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.