人们通过构建有用的代码块来构建Framework框架来帮助社区,并将其分发给其他人,这样他们就可以直接使用它,而无需再次重写所有逻辑。

它在软件行业中非常有用,您可以始终依靠他人以及他人投入大量时间进行完善和测试以供他人使用的开源库/框架,我们作为软件工程师,在方便时应利用它我们。

在大型团队中,人们建立框架以使工作模块化,这有助于大型团队拆分工作,而较小的团队可以孤立地工作。同样,能够在公司内的不同应用程序中重用相同的组件/框架,而不必从一个地方重写或复制/粘贴该代码。

在本文中,我将介绍如何构建框架并使用xcode测试框架。

创建框架源代码

本文是由xcode版本12.4 编写和测试的。
打开xcode并从框架项目开始。


我将其命名为mine FruitBasket,您可以选择任何内容,然后将其保存到桌面上,以便以后在构建xcframework时可以轻松地访问它。

什么是FruitBasket?这是我为本文编写的一个愚蠢的示例,它基本上是一篮水果,我们应该能够向其中添加水果,并且该篮应该告诉我们其中有多少种水果,它们是什么。挺有趣的,不是吗?

首先,我将添加一个快速文件以包含要使用的多种水果的简单枚举,然后将其命名为“水果”。

如您所见,我添加了public access修饰符,以便能够从框架外部(即,在导入此框架时从我们的项目中)访问该枚举。

我将为水果篮添加一个简单的类。随意添加仅一个功能进行打印Hello, world,在此示例中这并不重要。

现在框架代码已经准备就绪,让我们生成框架。

这是您需要了解的有关xcframeworks的知识,它们是您为他人分发的预编译代码(二进制代码)。

Xcode为特定的体系结构构建了framworks,因此,xcode将为模拟器构建框架,为iOS设备构建另一个框架,为macOS和tvOS构建另一个框架。

在大多数情况下,当您将框架分发给客户时,您不会为它们提供单独的框架,而当它们在模拟器或iPhone设备上运行时它们会被替换,我们将创建所需的所有框架,然后使用LIPO工具来帮助我们将所有这些框架组合到一个通用框架中.framework并进行分发。在此链接中-Yousef Hamza写了一篇非常详细的文章,介绍了如何使用LIPO。

但是,由于Apple引入了新的xcframework,因此我们不再需要LIPO。

因此,让我们看看如何创建它。

生成用于模拟器和设备的.xcframwork

首先从xcode中的构建设置启用 “分发的构建库”。


然后,打开一个终端窗口并导航到您的项目目录,在我的情况下,该目录保存在我的桌面上

注意:以下所有命令均用于FruitBasket,如果您以不同的方式命名项目,则必须使用框架名称调整所有命令。

cd ~/Desktop/FruitBasket/

并编写以下命令,这将创建一个可以在模拟器上运行的框架。

xcodebuild archive \-scheme FruitBasket \-archivePath ~/Desktop/FruitBasket-iphonesimulator.xcarchive \-sdk iphonesimulator \SKIP_INSTALL=NO

等待它完成,您将看到成功消息。

检查您的桌面,您应该看到已经在其中创建了名称为FruitBasket-iphonesimulator.xcarchive的xcarchive。

然后编写此非常相似的命令为iOS设备创建另一个命令。

xcodebuild archive \-scheme FruitBasket \-archivePath ~/Desktop/FruitBasket-iphoneos.xcarchive \-sdk iphoneos \SKIP_INSTALL=NO

成功之后,您现在应该将两个xcarchives与我相同

在这里,我们需要将两者结合在一起xcframework,将follow命令复制并粘贴到您的终端中,然后按Enter

xcodebuild -create-xcframework \-framework ~/Desktop/FruitBasket-iphonesimulator.xcarchive/Products/Library/Frameworks/FruitBasket.framework \-framework ~/Desktop/FruitBasket-iphoneos.xcarchive/Products/Library/Frameworks/FruitBasket.framework \-output ~/Desktop/FruitBasket.xcframework

您应该知道xcframwork已成功编写。

检查您的桌面并寻找 YourFrameworkName.xcframework

测试框架

从xcode创建一个新项目,单视图应用程序可以进行测试。

通过将您刚刚创建的xcframework文件拖放到Framworks,Libraries和Embedded Content中来添加它

现在切换到您的视图控制器并导入框架并开始对其进行测试。


在模拟器和真实设备上运行它,它应该运行并为您提供相同的结果。

恭喜您创建xcframework了可同时在模拟器和设备上运行的第一个程序。

Github用于FruitBasket的存储库

下一步是什么?

要了解有关二进制框架及其接口以及它们如何工作的更多信息,请观看WWDC精彩视频

参考

https://medium.com/swlh/how-to-build-xcframework-with-xcode-b3d0b3c08f43

翻译: 如何使用Xcode构建xcframework相关推荐

  1. OpenCASCADE:Mac OS X平台使用Xcode构建OCCT

    OpenCASCADE:Mac OS X平台使用Xcode构建OCCT OpenCASCADE:Mac OS X平台使用Xcode构建OCCT 配置 项目生成 建造 启动 DRAW OpenCASCA ...

  2. Xcode 构建优化全指南

    作者 | Saru  来源 | Medium 如果你正在寻求提高 Xcode 构建性能的方法,那你找对地方了.我看过很多博客或文章,很少能详尽说明如何加快 Xcode 构建速度,所以我决定整理一篇. ...

  3. Mac下Jenkins+SVN+Xcode构建持续

    1 安装Jenkins Jenkins是基于Java开发的一种持续集成工具.所以呢,要使用Jenkins必须使用先安装JDK. JDK安装 JDK 下载地址 jdk 1.8.png 安装JDK的过程略 ...

  4. Gradle2.0用户指南翻译——第六章. 构建脚本基础

    翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc 本文翻译所在分支: https://github.com/msdx/gradledoc/tre ...

  5. 【翻译】Google在构建静态代码分析工具方面的经验教训

    软件bug耗费开发者和软件公司大量的时间和金钱. 以2014年为例,被广泛使用的SSL协议实现中的一个("goto fail")bug导致可接受无效的SSL证书,另外一个与日期格式 ...

  6. (翻译) 识别处理Android构建时的内存问题

    此文是对# Identify & Handle Android Builds' Memory Issues的翻译,同时就文中个别名词增加了说明. 本人能力有限,如有错误还望指正.

  7. Laya 构建Xcode工程对接穿山甲SDK并打包提交App Store流程

    Laya 构建Xcode工程对接穿山甲SDK并打包提交App Store流程 laya构建Xcode工程 发布web项目 Laya部分Xcode构建 对接穿山甲SDK流程 laya所在文件夹resou ...

  8. Xcode 11 的那些新东西

    黑客技术 点击右侧关注,了解黑客的世界! Java开发进阶 点击右侧关注,掌握进阶之路! Python开发 点击右侧关注,探讨技术话题! 作者丨知识小集 来源丨知识小集(zsxjtip) Xcode ...

  9. Xcode 6 Bug:Interface Builder文件中的未知类

    本文翻译自:Xcode 6 Bug: Unknown class in Interface Builder file I upgraded to Xcode 6 beta 4 and now my A ...

  10. Xcode 7错误:“缺少iOS分发签名身份...”

    本文翻译自:Xcode 7 error: "Missing iOS Distribution signing identity for -" I tried to upload m ...

最新文章

  1. python把文字矢量化_这个python函数可以被矢量化吗?
  2. Silve37.Silverlight和ASP.NET相互传参的两种常用方式(QueryString,Cookie)
  3. python编程入门经典实例-终于明了python入门经典实例
  4. c++ Boost库之boost::bind学习
  5. xFace3.x 开发技巧(1)---从web开发转向移动开发
  6. Python 项目实践二(生成数据)第二篇
  7. mysql 5.7 ddl 原子_mysql 8 新特性二DDL操作的原子化
  8. 湖北职业技术学院计算机协会,湖北职业技术学院2019年教师教学能力大赛顺利举行...
  9. django3安装rest_framework,并测试
  10. ora-00119和ora-00132解决方案
  11. Java Web开发的轻便架构Tapestry5---简介
  12. mac 修改pip镜像为国内镜像
  13. 写给那些要找电子发票的数据接口规范的程序猿
  14. Shapley Explanation Networks
  15. PHP 大数据处理思路
  16. 电子计算器按键的功能
  17. ubuntu查看 固态硬盘位置_在Ubuntu(Linux)中启用固态硬盘(固态硬盘)TRIM | MOS86...
  18. P4409 [ZJOI2006]皇帝的烦恼(20190922B)(乱搞)
  19. 多种数据库连接工具_20多种热门数据工具及其不具备的功能
  20. EXCEL中插入图形

热门文章

  1. linux网络编程 mingw,Windows网络编程
  2. for循环中取出最大最小 累加_使用 for 循环实现从 1 累加至 10。_学小易找答案...
  3. python 解析模块脚本_Python HTMLParser模块解析html获取url实例
  4. PowerShell提示输入命令不是有效命令
  5. goflyway安装
  6. 重磅丨三年沉淀 2018全球人工智能技术大会蓄势待发
  7. transition animation
  8. 智能家居形态逐步演进 机会与挑战并存
  9. 深入理解React、Redux
  10. NETDOM的几个用法