问题描述
我需要用 carthage 安装包 https://github.com/socketio/socket.io-client-swift 使用 Xcode 12 项目。
github "socketio/socket.io-client-swift" ~> 15.0.0
我试过这个命令:
carthage update --platform iOS --use-xcframeworks
我试试:
但我总是有同样的错误:
CompileSwift normal i386 (in target 'SocketIO' from project 'Socket.IO-Client-Swift')
cd /Users/admin/Documents/test2/Carthage/Checkouts/socket.io-client-swift
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -frontend -c /Users/admin/Documents/test2/Carthage/Checkouts/socket.io-client-swift/Source/SocketIO/Engine/SocketEngine.swi$
/Users/admin/Documents/test2/Carthage/Checkouts/socket.io-client-swift/Source/SocketIO/Engine/SocketEngine.swift:27:8: error: Could not find module 'Starscream' for target 'i386-apple-ios-simulator'; found: arm64,armv7-$
import Starscream
也许我需要在某些环境或/和自定义文件中创建一个 ${ARCHS_STANDARD} ?
解决方法
我发现 Carthage 在很多情况下都没有正确设置 FRAMEWORK_SEARCH_PATHS
,这对我来说导致 Socket.IO 在编译时无法找到红蜘蛛。
以下是可用于设置 FRAMEWORK_SEARCH_PATHS
的解决方法脚本:
# carthage.sh
# Usage example: ./carthage.sh build --use-xcframeworks --platform iOS
set -euo pipefail
xcconfig=$(mktemp /tmp/static.xcconfig.XXXXXX)
trap 'rm -f "$xcconfig"' INT TERM HUP EXIT
echo "FRAMEWORK_SEARCH_PATHS=\$(inherited) $(pwd)/Carthage/Build" >> $xcconfig
# echo 'BUILD_LIBRARY_FOR_DISTRIBUTION=YES' >> $xcconfig # You may or may not need this depending on your project setup
export XCODE_XCCONFIG_FILE="$xcconfig"
carthage "$@"