linux嵌入式swift,ios – 存档时Swift嵌入式框架构建失败

在Xcode项目中添加Swift框架作为子项目,并能正常在模拟器和设备上运行,但在尝试归档时遇到错误,提示找不到'Release-iphonesimulator'文件夹。框架的构建脚本中包含了设备平台的构建步骤,但缺少模拟器平台的部分。已尝试注释掉检查模拟器平台的代码行。
摘要由CSDN通过智能技术生成

我在项目中添加了一个

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

>发布通用

> SwiftSupport

并且没有“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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值