platform :ios, '15.6' target 'ReadViewDemo' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! pod 'RDSpeechReaderView/AI', :path => '../Sources/RDSpeechReaderView' pod 'RDAIReaderView/NaturalLanguage', :path => '../Sources/RDAIReaderView' pod 'RDAIReaderView/FoundationModels', :path => '../Sources/RDAIReaderView' pod 'RDAIReaderView/UI', :path => '../Sources/RDAIReaderView' pod 'RDEpubReaderView', :path => '../Sources/RDEpubReaderView' pod 'RDEpubReaderView/Speech', :path => '../Sources/RDEpubReaderView' pod 'RDEpubReaderView/AI', :path => '../Sources/RDEpubReaderView' pod 'RDPDFReaderView', :path => '../Sources/RDPDFReaderView' pod 'RDPDFReaderView/Speech', :path => '../Sources/RDPDFReaderView' pod 'RDPDFReaderView/AI', :path => '../Sources/RDPDFReaderView' end post_install do |installer| # 不再由本 Podfile 全局关闭 ENABLE_USER_SCRIPT_SANDBOXING——之前的写法会把 # 宿主工程一起强制改成 NO,属于我们主动降级安全基线。现在交回工程默认值。 # # 注意:本工程用 use_frameworks!,CocoaPods 生成的 [CP] Embed Pods Frameworks # 脚本阶段用 rsync 往 .app/Frameworks 拷贝产物;一旦把该设置显式打成 YES, # 这一步会被沙箱拒绝(file-write-unlink / utimensat: Operation not permitted) # 而整个构建失败——已实测确认。真要打开必须先改掉动态框架集成方式 # (静态库 / SPM),别只翻这个开关。 apply_settings = lambda do |config| config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.0' end # Pods project (Pods.xcodeproj) installer.pods_project.build_configurations.each { |c| apply_settings.call(c) } installer.pods_project.targets.each { |t| t.build_configurations.each { |c| apply_settings.call(c) } } # User project(s) that integrate Pods (e.g. ReadViewDemo) installer.aggregate_targets.each do |at| p = at.user_project next unless p p.build_configurations.each { |c| apply_settings.call(c) } p.targets.each { |t| t.build_configurations.each { |c| apply_settings.call(c) } } p.save end end