94 lines
2.8 KiB
Bash
94 lines
2.8 KiB
Bash
|
|
#!/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"
|