iOS-开发进阶06:XCFramework

作者: differ_iOSER | 来源:发表于2021-03-08 09:53 被阅读0次

iOS 开发进阶 文章汇总

目录

一、XCFramework简介

XCFramework:是苹果官方推荐的、支持的,可以更方便的表示一个多个平台和架构的分发进制库的格式。
需要Xcode11以上支持。
是为更好的支持Mac CatalystARM芯片的macOS
专门在2019年提出的Framework的另一种先进格式。

和传统的Framework相比:

  1. 可以用单个.xcframework文件提供多个平台的分发二进制文件;
  2. 与Fat Header相比,可以按照平台划分,可以包含相同架构的不同平台的文件;
  3. 在使用时,不需要再通过脚本去剥离不需要的架构体系。

二、创建XCFramework

准备如下代码:


1、创建模拟器和真机平台下的Framework

build.sh中的命令如下:

xcodebuild archive -project 'SYTimer.xcodeproj' \
-scheme 'SYTimer' \
-configuration Release \
-destination 'generic/platform=iOS Simulator' \
-archivePath '../archives/SYTimer.framework-iphonesimulator.xcarchive' \
SKIP_INSTALL=NO

xcodebuild archive -project 'SYTimer.xcodeproj' \
-scheme 'SYTimer' \
-configuration Release \
-destination 'generic/platform=iOS' \
-archivePath '../archives/SYTimer.framework-iphoneos.xcarchive' \
SKIP_INSTALL=NO

List of destinations

执行build.sh脚本:

2、创建XCFramework

创建xcframework文件夹

cd xcframework文件夹路径

xcodebuild -create-xcframework \
-framework '../archives/SYTimer.framework-iphoneos.xcarchive/Products/Library/Frameworks/SYTimer.framework' \
-framework '../archives/SYTimer.framework-iphonesimulator.xcarchive/Products/Library/Frameworks/SYTimer.framework' \
-output 'SYTimer.xcframework'

一般XCFramework需要包含BitCode和dSYMs方便崩溃时恢复调用栈,那么修改创建XCFramework的命令如下:

xcodebuild -create-xcframework \
-framework '../archives/SYTimer.framework-iphoneos.xcarchive/Products/Library/Frameworks/SYTimer.framework' \
-debug-symbols '/Users/ztkj/Desktop/创建XCFramework/archives/SYTimer.framework-iphoneos.xcarchive/BCSymbolMaps/1F3E7957-8302-390B-AE49-34E61B49E11E.bcsymbolmap' \
-debug-symbols '/Users/ztkj/Desktop/创建XCFramework/archives/SYTimer.framework-iphoneos.xcarchive/BCSymbolMaps/5C6DD85F-0EFE-3551-B330-5AC4A91D32ED.bcsymbolmap' \
-debug-symbols '/Users/ztkj/Desktop/创建XCFramework/archives/SYTimer.framework-iphoneos.xcarchive/dSYMs/SYTimer.framework.dSYM' \
-framework '../archives/SYTimer.framework-iphonesimulator.xcarchive/Products/Library/Frameworks/SYTimer.framework' \
-debug-symbols '/Users/ztkj/Desktop/创建XCFramework/archives/SYTimer.framework-iphonesimulator.xcarchive/dSYMs/SYTimer.framework.dSYM' \
-output 'SYTimer.xcframework'

⚠️注意:1、只有真机才有BitCode。2、BitCode和dSYMs的文件路径必须传绝对路径
3、lipo合并不同平台的Framework要求Framework之间不能有相同的架构

3、使用XCFramework

Xcode会根据不同的编译平台拷贝XCFramework中相应平台架构下的二进制代码

参考

Session视频地址

developer.apple.com/videos/play…

文档说明

devstreaming-cdn.apple.com/videos/wwdc…

其他第三方的资料

appspector.com/blog/xcfram…

github.com/bielikb/xcf…

juejin.im/post/684490…

相关文章

网友评论

    本文标题:iOS-开发进阶06:XCFramework

    本文链接:https://www.haomeiwen.com/subject/iexytltx.html