当前位置: 首页 > 知识库问答 >
问题:

图书馆?静电?动态?还是框架?另一个项目内的项目

笪涛
2023-03-14

我不知道它应该是一个静态库、动态库还是一个框架,老实说,我真的不知道有什么区别,也不知道我应该如何去做并在Xcode中设置它。

我只知道我需要/想要为共享代码保留一个单独的测试和更新app,并让主app使用它。

共有1个答案

羊舌承天
2023-03-14

一、一些通用定义(具体到iOS):

静态库--编译时链接的代码单位,不变。

但是,iOS静态库不允许包含映像/资产(只允许包含代码)。不过,您可以通过使用介质包来解决这个问题。

动态库--运行时链接的代码和/或资产的一个单元,可能会发生变化。

不过,只允许苹果为iOS创建动态库。您不允许创建这些,因为这将使您的应用程序被拒绝。(请参阅此其他SO帖子,以获得对此的确认和推理)。

软件框架--完成一项任务的编译代码集...因此,您实际上可以有一个静态框架或一个动态框架,它们通常只是上面的编译版本。

因此,在iOS上,您的唯一选择基本上是使用静态库或静态框架(主要区别是静态框架通常是作为编译的.a文件分发的,而静态库可能只是作为子项目包含--您可以看到所有代码--首先编译的代码及其作为项目依赖项使用的结果.a文件)。

既然我们已经明白了(呃)这些条款,那么为iOS设置静态库和支持媒体包就不是太难了,有很多教程介绍如何这样做。我个人会推荐这个:

https://github.com/jverkoey/ios-framework

这是一个非常简单的指南,没有处理“假静态库”的缺点。有关更多信息,请查看...

一旦您创建了静态库,就可以很容易地将它作为一个子模块包含在Git中,以便在不同的项目中使用。

编辑

关于一个项目中的子项目,据我所知,要使其正确工作/编译,您基本上必须设置一个编译链,在该链中首先编译子项目,这将创建一个静态html" target="_blank">框架.a文件,该文件被项目用作依赖项。

下面是另一个有用的教程,它讨论了这一点:

http://www.cocoanetics.com/2011/12/Sub-Projects-in-Xcode/

编辑2

从iOS 8开始,苹果现在允许开发者创建动态框架!(注意:你的应用程序必须有一个iOS 8的最低目标,才能包含一个动态框架...不允许回传。)

New Project -> iOS -> Framework & Library -> Cocoa Touch Framework
 类似资料:
  • "just as the Son of Man came not to be served but to serve, and to give his life a ransom for many."(MATTHEW:20:28) 静态文件以及一个项目框架 在网上浏览网页,由于现在网速也快了,大概你很少注意网页中那些所谓的静态文件。怎么找出来静态文件呢? 如果使用firefox(我特别向列位推荐这

  • 在本章中,我们将深度学习与不同的库和框架联系起来。 深度学习和Theano 如果我们想要开始编码深度神经网络,我们最好知道不同的框架如Theano,TensorFlow,Keras,PyTorch等是如何工作的。 Theano是python库,它提供了一系列功能,用于构建可在我们的机器上快速训练的深网。 Theano是在加拿大蒙特利尔大学开发的,由Yoshua Bengio领导,是一个深厚的网络先

  • 我创建一个OSGi包将被执行 该程序应该读取XBee上收到的数据,我们想使用一个库:https://github.com/andrewrapp/xbee-api 我创建了一个新的Eclipse插件项目,”并不 我试图在清单中将新插件设置为“必需插件”。FM →我的项目的依赖项,但那不起作用(java.lang.ClassNotFoundException) 我尝试在我的项目中建立一个包含库的新文件

  • 我使用MFC和对话框创建了两个独立的可执行文件项目。 我是visual studio的新手,所以请给出一些建议。谢谢

  • 我试图在我的PyDev Jython项目中使用编译的. jarJava库。 我成功地添加了。jar连接到PYTHONPATH,并能够开始自动完成工作。 图书馆需要一个。dll扩展,javaHeclib。dll,所以我将其添加到项目的外部Libs部分。 我可以很好地导入库,但当我尝试访问它的任何函数时,我会出错: 我在运行配置中添加了一个VM参数,但运气不好: 我可以使用java从命令行运行库。图书

  • **新到分级 我有一个需求,需要使用一个现有的spring boot项目(它安装在本地maven存储库中)作为另一个项目(spring boot gradle项目)中的依赖项。 使用mavenLocal我能够成功地运行和构建gradle项目,但是当我试图使用其他项目中存在的任何类时,我就无法导入它。 我如何使用这个分级项目中的maven项目?