我有带有静态库和聚合解决方案的xcode项目,在构建阶段添加了多个平台脚本,这样我就可以创建xcframework:
SCHEME_NAME=${PROJECT_NAME}
FRAMEWORK_NAME=${PROJECT_NAME}
SIMULATOR_ARCHIVE_PATH="${BUILD_DIR}/${CONFIGURATION}/${FRAMEWORK_NAME}-iphonesimulator.xcarchive"
DEVICE_ARCHIVE_PATH="${BUILD_DIR}/${CONFIGURATION}/${FRAMEWORK_NAME}-iphoneos.xcarchive"
# Simulator xcarchieve
xcodebuild archive \
-scheme ${SCHEME_NAME} \
-archivePath ${SIMULATOR_ARCHIVE_PATH} \
-sdk iphonesimulator \
SKIP_INSTALL=NO \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES
# Device xcarchieve
xcodebuild archive \
-scheme ${SCHEME_NAME} \
-archivePath ${DEVICE_ARCHIVE_PATH} \
-sdk iphoneos \
SKIP_INSTALL=NO \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES
# Remove older version
rm -rf "${HOME}/Desktop/${FRAMEWORK_NAME}_${APPOXEE_SDK_VERSION}"
# Create Products && Documentation && SDK directories
mkdir -p "${HOME}/Desktop/${FRAMEWORK_NAME}_${APPOXEE_SDK_VERSION}/Documentation"
mkdir -p "${HOME}/Desktop/${FRAMEWORK_NAME}_${APPOXEE_SDK_VERSION}/SDK"
# Create xcframwork combine of all frameworks
xcodebuild -create-xcframework \
-library ${SIMULATOR_ARCHIVE_PATH}/Products/usr/local/lib/lib${FRAMEWORK_NAME}.a -headers ${SIMULATOR_ARCHIVE_PATH}/Products/usr/local/lib/${FRAMEWORK_NAME}Headers \
-library ${DEVICE_ARCHIVE_PATH}/Products/usr/local/lib/lib${FRAMEWORK_NAME}.a -headers ${DEVICE_ARCHIVE_PATH}/Products/usr/local/lib/${FRAMEWORK_NAME}Headers\
-output ${HOME}/Desktop/${FRAMEWORK_NAME}_${APPOXEE_SDK_VERSION}/SDK/${FRAMEWORK_NAME}.xcframework这就可以创建xcframework了。在xcframework内部有info.plist

表示所有的体系结构arm64、armv7和i386、x86_64都出现在xcfremework,这与我做lipo -info时得到的结果相同。
Podspec文件看起来如下:
Pod::Spec.new do |s|
s.name = "TestSDK"
s.version = "6.0.4"
s.summary = "Test SDK enables developers to harnest the full power of Test Engage Platform on their iOS applications."
s.description = <<-DESC
Test SDK enables push notification in your iOS application, for engaging your application users and increasing retention.
DESC
s.homepage = "https://mapp.com"
s.license = { :type => "Custom", :file => "Licence.txt" }
s.author = { "Test Digital" => "https://test.com/contact-us/" }
s.source = { :git => "https://github.com/TestCloud/TestSDK.git", :tag => "6.0.4" }
s.ios.framework = 'UserNotifications'
s.platform = :ios, "10.0"
s.ios.vendored_frameworks = "SDK/TestSDK.xcframework"
s.preserve_paths = 'SDK/TestSDK.xcframework'
s.resource_bundle = { 'TestSDKResources' => 'SDK/TestSDKResources.bundle' }
s.requires_arc = true
end而pod lint返回一个错误:无法在'../../../../../../../../Users/ssad.ter/Desktop/private_pod/TestSDK/SDK/TestSDK.xcframework RwarSDK库ios-arm64_armv7 ios-i 386_ x86_64 -仿真器中找到当前构建体系结构(arm64 X86_64 i386)中的匹配.xcframework片。
但正如我所解释的,它包含了那些体系结构。
荚lib lint成功运行的唯一方法是我添加到pod lib lint =Debug中。
但是从脚本中可以看到,设置为YES,而忽略INSTALL,在XCode的构建设置中也是这样做的。当您在XCode上进入编辑方案选项时,存档被设置为释放模式。
有人能给我指一下这里有什么问题吗?
发布于 2022-05-25 09:45:13
您的plist显示您只有x86_64和i386体系结构可用于模拟器。您在M1 mac上运行命令吗?如果是,您也需要对模拟器提供arm64 arch支持,或者可以在rosetta仿真下运行pod lib lint,如下所示:
arch -x86_64 pod lib linthttps://stackoverflow.com/questions/69988346
复制相似问题