我的自定义框架在XCode 10中能够正常工作。但是我在XCode 11 beta 3中重新构建它,然后将其集成到应用程序中,出现了以下错误:
无法在目标“x86_64-apple-ios-simulator”中找到模块“MyCustomFramework”;已找到:arm64、arm64-apple-ios。
在框架项目中,我需要在“有效架构”中进行哪些更改吗?
更新: 在我的情况下,这个框架非常小(一个类,几个方法),几乎没有使用,因此我决定摆脱它,将这些几个方法移入主项目中。
我的自定义框架在XCode 10中能够正常工作。但是我在XCode 11 beta 3中重新构建它,然后将其集成到应用程序中,出现了以下错误:
无法在目标“x86_64-apple-ios-simulator”中找到模块“MyCustomFramework”;已找到:arm64、arm64-apple-ios。
在框架项目中,我需要在“有效架构”中进行哪些更改吗?
更新: 在我的情况下,这个框架非常小(一个类,几个方法),几乎没有使用,因此我决定摆脱它,将这些几个方法移入主项目中。
这个错误意味着你的自定义框架已经为任何iOS设备(实际设备)构建,并且你正在尝试在模拟器上使用这个自定义框架来测试你的应用程序。
解决方案非常简单。只需重新为你要测试的模拟器(例如iPhone 13模拟器)构建你的自定义框架,而不是为“任何iOS设备”构建。然后用新编译的框架替换旧框架即可。
我必须将'Build Active Architecture Only'
从Debug:Yes/Release:No
设置为Debug:No/Release:No
,以解决任何Pod目标显示错误的问题。
'在目标'x86_64-apple-ios-simulator'中找不到模块'PODNAME';'
其中PODNAME是编译时抛出错误的Pod。
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
cp -a "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework"
"${UNIVERSAL_OUTPUTFOLDER}/"
SIMULATOR_SWIFT_MODULES_DIR="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule/."
if [ -d "${SIMULATOR_SWIFT_MODULES_DIR}" ]; then
cp -R "${SIMULATOR_SWIFT_MODULES_DIR}" "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule"
fi
lipo -create -output
"${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}"
"${BUILD_DIR}/${CONFIGURATION}-
iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}"
"${BUILD_DIR}/${CONFIGURATION}-
iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}"
cp -R "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework"
"${PROJECT_DIR}"
open "${PROJECT_DIR}"
这个问题实际上是关于创建自定义框架的。即使发布多年后,人们仍然访问该页面以解决类似的问题。我认为我们需要寻找其他解决方案。
Xcode 11之后,现在Xcode完全支持在Swift中使用和创建二进制框架。使用新的XCFramework捆绑类型同时支持设备和模拟器。 XCFrameworks支持Swift和基于C的代码(C、C++、Objective-C)的二进制分发。单个XCFramework可以包含模拟器和设备的变体。这意味着您可以为任何架构(包括模拟器、任何Apple操作系统,甚至是UIKit和AppKit应用程序的单独切片)提供切片。
如果您有兴趣使用库来创建自定义框架,可以查看repo。
使用以下命令删除您的Pod并安装Pod:
"arch -x86_64" pod install
target 'SampleProject' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for SampleProject
target 'SampleProjectTests' do
inherit! :search_paths
# Pods for testing
end
end