#!/bin/bash # 配置 Unity iOS 项目脚本 PROJECT_DIR="/Users/bread/iosapp" echo "=== 配置 iOS 项目 ===" cat > /tmp/fix_project.rb << 'RUBY' require 'xcodeproj' project_path = ARGV[0] begin project = Xcodeproj::Project.open(project_path) # 获取 UnityFramework target target = project.targets.find { |t| t.name == 'UnityFramework' } if target # 1. 移除 SPM 的 Firebase 引用 puts "检查并移除 SPM Firebase 引用..." # 从 frameworks_build_phase 移除 SPM 产品 files_to_remove = [] target.frameworks_build_phase.files.each do |file| if file.file_ref && file.file_ref.isa == 'XCSwiftPackageProductDependency' puts "移除 SPM 框架: #{file.file_ref.product_name}" files_to_remove << file end end files_to_remove.each { |f| target.frameworks_build_phase.remove_build_file(f) } # 从 package_product_dependencies 移除 target.package_product_dependencies.clear puts "已清除 package_product_dependencies" # 2. 添加 NativeQRScanner.mm puts "" puts "添加 NativeQRScanner.mm..." file_ref = project.main_group.find_file_by_path('Classes/NativeQRScanner.mm') if file_ref.nil? classes_group = project.main_group.groups.find { |g| g.path == 'Classes' } if classes_group file_ref = classes_group.new_file('Classes/NativeQRScanner.mm') puts "创建文件引用: Classes/NativeQRScanner.mm" end end if file_ref existing = target.source_build_phase.files_references.find { |f| f == file_ref } if existing.nil? target.source_build_phase.add_file_reference(file_ref) puts "添加 NativeQRScanner.mm 到编译列表" else puts "NativeQRScanner.mm 已在编译列表中" end end # 3. 添加 AVFoundation 框架 puts "" puts "添加 AVFoundation.framework..." avfoundation = project.frameworks_group.files.find { |f| f.path == 'AVFoundation.framework' } if avfoundation.nil? file_ref = project.frameworks_group.new_file('System/Library/Frameworks/AVFoundation.framework') file_ref.source_tree = 'SDKROOT' target.frameworks_build_phase.add_file_reference(file_ref) puts "添加 AVFoundation.framework" else puts "AVFoundation.framework 已存在" end end # 4. 从 rootObject 的 packageReferences 中移除 puts "" puts "清理项目中的 SPM package 引用..." if project.root_object.package_references project.root_object.package_references.clear puts "已清除 rootObject packageReferences" end project.save puts "" puts "项目配置完成" rescue => e puts "错误: #{e.message}" puts e.backtrace.first(3) end RUBY ruby /tmp/fix_project.rb "$PROJECT_DIR/Unity-iPhone.xcodeproj" echo "" echo "=== 配置完成 ===" echo "请用 Xcode 打开: $PROJECT_DIR/Unity-iPhone.xcworkspace"