自定义框架在模拟器中工作。无法在真实设备中工作

问题描述 投票:0回答:1

我正在 iOS 原生中创建自定义框架。该框架将添加到反应本机项目中,将我的框架视为反应中的本机模块。我正在使用 M1 mac

框架在模拟器(rosetta 目标模拟器和苹果硅模拟器)中运行良好。但不适用于真实设备。在加载框架本身之前或加载框架本身时发生崩溃。

我的框架项目构建设置:

架构我设置为arm64,x86_64

构建主动架构=否

安装目录 -

@executable_path/../Frameworks

** 我的框架脂肪信息:**

fat文件中的架构:/Users/userName/Documents/AbcSourceCode/CustomFramework/CustomFramework.framework/CustomFramework是:x86_64 arm64

我的运行脚本:

#!/bin/sh UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-通用 确保输出目录存在 mkdir -p“${UNIVERSAL_OUTPUTFOLDER}” 为设备构建 xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" 干净构建 将框架结构复制到设备的通用文件夹中 cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/" 为模拟器构建 xcodebuild -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" 干净构建 将框架结构复制到模拟器的通用文件夹中 cp -R "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/" 使用 lipo 组合设备和模拟器的框架 lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}"
“${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}”
“${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}” 将 Swift 模块从模拟器构建(如果存在)复制到复制的框架目录 SIMULATOR_SWIFT_MODULES_DIR="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule/。" 如果 [ -d "${SIMULATOR_SWIFT_MODULES_DIR}" ];然后 cp -R "${SIMULATOR_SWIFT_MODULES_DIR}" "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule" 菲 将框架复制到项目目录并在 Finder 中打开的便捷步骤 cp -R "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework" "${PROJECT_DIR}" 打开“${UNIVERSAL_OUTPUTFOLDER}”

我的错误:

dyld[541]: Library not loaded: @rpath/CustomFramework.framework/CustomFramework   Referenced from: <E072FE8A-611F-30AB-A6ED-186777B4B0F1> /private/var/containers/Bundle/Application/8B615D3F-B911-41DB-A630-F74C7737DAC4/App.app/App   Reason: tried: '/usr/lib/swift/CustomFramework.framework/CustomFramework' (no such file, not in dyld cache), '/private/preboot/Cryptexes/OS/usr/lib/swift/CustomFramework.framework/CustomFramework' (no such file), '/private/var/containers/Bundle/Application/8B615D3F-B911-41DB-A630-F74C7737DAC4/App.app/Frameworks/CustomFramework.framework/CustomFramework' (mach-o file (/private/var/containers/Bundle/Application/8B615D3F-B911-41DB-A630-F74C7737DAC4/App.app/Frameworks/CustomFramework.framework/CustomFramework), but incompatible platform (have 'iOS-sim', need 'iOS')), '/private/var/containers/Bundle/Application/8B615D3F-B911-41DB-A630-F74C7737DAC4/App.app/Frameworks/CustomFramework.framework/CustomFramework' (mach-o file (/private/var/containers/Bundle/Application/8B615D3F-B911-41DB-A630-F74C7737DAC4/App.app/Frameworks/CustomFramework.framework/CustomFramework), but incompatible platform (have 'iOS-sim', need 'iOS')), '/usr/lib/swift/CustomFramework.framework/CustomFramework' (no such file, not in dyld cache), '/private/preboot/Cryptexes/OS/usr/lib/swift/CustomFramework.framework/CustomFramework' (no such file), '/private/var/containers/Bundle/Application/8B615D3F-B911-41DB-A630-F74C7737DAC4/App.app/Frameworks/CustomFramework.framework/CustomFramework' (mach-o file (/private/var/containers/Bundle/Application/8B615D3F-B911-41DB-A630-F74C7737DAC4/App.app/Frameworks/CustomFramework.framework/CustomFramework), but incompatible platform (have 'iOS-sim', need 'iOS')), '/private/var/containers/Bundle/Application/8B615D3F-B911-41DB-A630-F74C7737DAC4/App.app/Frameworks/CustomFramework.framework/CustomFramework' (mach-o file (/private/var/containers/Bundle/Application/8B615D3F-B911-41DB-A630-F74C7737DAC4/App.app/Frameworks/CustomFramework.framework/CustomFramework), but incompatible platform (have 'iOS-sim', need 'iOS'))

ios swift xcode frameworks rosetta-2
1个回答
0
投票

Xcode 错误

(have 'iOS-sim', need 'iOS')
它需要一个为 iOS 设备编译的库,但您使用的库是针对模拟器的。
您使用的是M1Mac进行静态库编译,在非rosetta的情况下,模拟器版本和iPhone版本都是arm64架构,您如何区分两者?
推荐XC框架。

© www.soinside.com 2019 - 2024. All rights reserved.