ios – 存档时Swift嵌入式框架构建失败
发布时间:2020-12-14 17:18:46 所属栏目:百科 来源:网络整理
导读:我在项目中添加了一个 swift框架作为子项目.当我在模拟器和设备上运行时,它工作正常.但是,当我尝试归档主要产品时,它失败并出现错误: “/Users/mac/Library/Developer/ Xcode/DerivedData/ProductName-bhtbyknuwzpjjwaadaqiytxtzypo/Build/Intermediates/Ar
我在项目中添加了一个
swift框架作为子项目.当我在模拟器和设备上运行时,它工作正常.但是,当我尝试归档主要产品时,它失败并出现错误:
“/Users/mac/Library/Developer/ Xcode/DerivedData/ProductName-bhtbyknuwzpjjwaadaqiytxtzypo/Build/Intermediates/ArchiveIntermediates/ProductName/BuildProductsPath/Release-iphonesimulator/MyFramework.framework:No such file or directory” 我搜索了那条路径,结束了文件夹“/ Users / mac / Library / Developer / Xcode / DerivedData / ProductName-bhtbyknuwzpjjwaadaqiytxtzypo / Build / Intermediates / ArchiveIntermediates / ProductName / BuildProductsPath” 它只有三个子文件夹: >发布 – iphoneos 并且没有“Release-iphonesimulator”文件夹. set -e set +u # Avoid recursively calling this script. if [[ $SF_MASTER_SCRIPT_RUNNING ]] then exit 0 fi set -u export SF_MASTER_SCRIPT_RUNNING=1 # Constants SF_TARGET_NAME=${PROJECT_NAME} UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal # Take build target if [[ "$SDK_NAME" =~ ([A-Za-z]+) ]] then SF_SDK_PLATFORM=${BASH_REMATCH[1]} else echo "Could not find platform name from SDK_NAME: $SDK_NAME" exit 1 fi #if [[ "$SF_SDK_PLATFORM" = "iphoneos" ]] #then #echo "Please choose iPhone simulator as the build target." #exit 1 #fi IPHONE_DEVICE_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos # Build the other (non-simulator) platform xcodebuild -project "${PROJECT_FILE_PATH}" -target "${TARGET_NAME}" -configuration "${CONFIGURATION}" -sdk iphoneos BUILD_DIR="${BUILD_DIR}" OBJROOT="${OBJROOT}" BUILD_ROOT="${BUILD_ROOT}" CONFIGURATION_BUILD_DIR="${IPHONE_DEVICE_BUILD_DIR}/arm64" SYMROOT="${SYMROOT}" ARCHS='arm64' VALID_ARCHS='arm64' $ACTION xcodebuild -project "${PROJECT_FILE_PATH}" -target "${TARGET_NAME}" -configuration "${CONFIGURATION}" -sdk iphoneos BUILD_DIR="${BUILD_DIR}" OBJROOT="${OBJROOT}" BUILD_ROOT="${BUILD_ROOT}" CONFIGURATION_BUILD_DIR="${IPHONE_DEVICE_BUILD_DIR}/armv7" SYMROOT="${SYMROOT}" ARCHS='armv7 armv7s' VALID_ARCHS='armv7 armv7s' $ACTION # Copy the framework structure to the universal folder (clean it first) rm -rf "${UNIVERSAL_OUTPUTFOLDER}" mkdir -p "${UNIVERSAL_OUTPUTFOLDER}" cp -R "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework" # Smash them together to combine all architectures lipo -create "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/arm64/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/armv7/${PROJECT_NAME}.framework/${PROJECT_NAME}" -output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}" 注意:我已评论以下行,因为仅使用设备sdk平台(不是模拟器)启用存档 if [[ "$SF_SDK_PLATFORM" = "iphoneos" ]] then echo "Please choose iPhone simulator as the build target." exit 1 fi 解决方法
>在尝试将它们组合在一起之前构建模拟器.
echo "Building for iPhoneSimulator" xcodebuild -workspace "${WORKSPACE_PATH}" -scheme "${TARGET_NAME}" -configuration ${CONFIGURATION} -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 7' ONLY_ACTIVE_ARCH=NO ARCHS='i386 x86_64' BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" ENABLE_BITCODE=YES OTHER_CFLAGS="-fembed-bitcode" BITCODE_GENERATION_MODE=bitcode clean build >还要确保输出目录存在 mkdir -p "${UNIVERSAL_OUTPUTFOLDER}" 把它放在评论上: #Take build target (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |