使用 Cocoapods 创建 XCFramework 的错误

vin*_*dla 10 ios cocoapods arm64 xcode11 xcframework

我正在尝试从 Xcode 框架项目(项目名称 XCFramework)生成一个 iOS XCFramework。项目由一些 cocoa-pods 库组成,如 Socket IO、SwiftKeyChainWrapper 等。 如果我生成没有 cocoa-pods 的 XCFramework,xcodebuild 命令会为 iOS 和 iOS 模拟器目标成功生成 XCFramework,但是当我在框架项目中安装 pod 时我收到很多错误。如果有人遇到这种情况并成功地帮助使用可可豆荚生成 XCFramework 示例项目,那将非常有帮助。

注意:a) 我使用了一个名为xcframework 的小包,它在命令 (1) 中生成 xcfremwork b) 如果我直接从 Xcode 存档项目,存档会成功。

1) 构建命令:- xcframework build --project XCFramework.xcodeproj --name XCFramework --iOS EcallXCFramework

...... ...... ** 存档失败**

以下构建命令失败:Ld /Users/*******/Library/Developer/Xcode/DerivedData/XCFramework-gccrcnyzlsezmugkrqqlnpusjfci/Build/Intermediates.noindex/ArchiveIntermediates/XCFramework/InstallationBuildProductsLocation/Library/Frameworks/XCFramework.framework/ XCFramework 正常 arm64(1 失败)

2)构建命令:- xcodebuild archive -scheme XCFramework -destination="generic/platform=iOS" -destination="generic/platform=iOS Simulator" SKIP_INSTALL=NO

...... ...... 来自命令行的用户默认值:destination = generic/platform=iOS Simulator

从命令行构建设置:SKIP_INSTALL = NO

xcodebuild:错误:无法使用 XCFramework 方案构建项目 EcallXCFramework。原因:运行目标 My Mac 对存档方案“XCFramework”无效。

3) 构建命令:- xcodebuild 存档 ..... ..... ld:未找到框架 SwiftKeychainWrapper clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

** 存档失败 **

以下构建命令失败: Ld /tmp/EcallXCFramework.dst/Library/Frameworks/EcallXCFramework.framework/EcallXCFramework normal arm64 (1 failure)

yon*_*vav 0

我认为您的归档命令可能有问题。

这是我的存档方式,希望对您和其他人有所帮助:

// Generate simulator archive
xcodebuild archive \
  -scheme <scheme_name> \
  -sdk iphonesimulator \
  -archivePath "archives/ios_simulators.xcarchive" \
  BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
  SKIP_INSTALL=NO
 
// Generate device archive
xcodebuild archive \
  -scheme <scheme_name> \
  -sdk iphoneos \
  -archivePath "archives/ios_devices.xcarchive" \
  BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
  SKIP_INSTALL=NO
 
// XCFramework generation
xcodebuild -create-xcframework \
    -framework <absolute_path>/archives/ios_devices.xcarchive/Products/Library/Frameworks/<scheme_name>.framework \
    -debug-symbols <absolute_path>/archives/ios_devices.xcarchive/dSYMs/<scheme_name>.framework.dSYM \
    -framework <absolute_path>/archives/ios_simulators.xcarchive/Products/Library/Frameworks/<scheme_name>.framework \
    -debug-symbols <absolute_path>/archives/ios_simulators.xcarchive/dSYMs/<scheme_name>.framework.dSYM \
  -output build/<scheme_name>.xcframework
Run Code Online (Sandbox Code Playgroud)