kill-ios-app/setup_project.sh

94 lines
2.8 KiB
Bash
Raw Normal View History

2026-06-23 09:54:30 +08:00
#!/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"