IOS-WorkSpace管理两个项目并相互依赖

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS-WorkSpace管理两个项目并相互依赖相关的知识,希望对你有一定的参考价值。

参考技术A 吐槽:网上有一些人是很厉害但不会描述,往往引导想学习的开发者们入了一个坑之后又一个坑,我也是深受其害,TMD。但是更有些一些猪想都不想把别人的成果Copy过来就以为是他的了,你TMD,坑的人更多。

1、WorkSpace 管理多个项目,项目之间相互依赖
2、WorkSpace 管理一个项目和一堆自定义封装的静态库/动态库,主项目可以调用静态库/动态库的方法

1、这里这篇文章描述的是第一种情况的一些细节问题 demo1地址
2、第二种情况跟第一种生成的形式一样,没什么特殊的 demo2地址

具体步骤
具体的生成步骤,网上已经有大牛写了,我就省了,点击我查看

我要说明的是你在B工程中声明的方法,如果要拿到A工程来用的话,需要把 .h .m 都要声明一下,不然的话A工程是无法引用,而引用的话只需要引用一次就可以了,我建议直接写一个head头文件用来管理B项目中的文件,然后将文件放到AppDelegate处声明

2、然后在A工程的pch 文件中声明你在B工程中暴露出来的方法的.h
这样整个A工程都可以使用了

Git子模块与依赖管理?

【中文标题】Git子模块与依赖管理?【英文标题】:Git submodules vs dependency management? 【发布时间】:2018-08-14 23:51:59 【问题描述】:

在我工作的地方,我们使用一个名为 apache Ivy 的工具来进行依赖管理。但是,我最近一直在开发自己的项目,其中包含多个存储库,因此,我使用 git 超级项目来维护所有存储库。 git 子模块对我来说非常棒,到目前为止,我更喜欢它们而不是 Ivy。以下是我喜欢 Ivy 的主要方面:

每当您对两个或多个相互依赖的存储库进行更改时,您只需提交到超级项目,这样就可以清楚地看出什么依赖于什么。在 Ivy 中,您必须发布一个全新的版本,这很烦人。 在超级项目中更好地跟踪更改要容易得多。据我所知,Ivy 不会很好地跟踪您对版本的更改。 Git 的支持比 Ivy 多得多 你只需要了解一种工具,GIT!!!

但是,我的公司拒绝接触 git 子模块/超级项目。我也一直在做一些研究,似乎很多人不喜欢 git 子模块,它不被认为是一个“依赖管理”工具。谁能帮我理解为什么?

【问题讨论】:

Git 的子模块传统上很糟糕,部分原因是在 Git 1.5 和更早的时代,对 in-Git 的支持真的很差。它已经改进了很多,但从那时起我就没有尝试过使用它。看看其他人是否有很好的经验会很有趣。 我最近用过它,但仍然讨厌它。特别是如果超级项目中有多个开发人员和分支。如果您是一个人或与小团体一起,这很好。在任何其他情况下都会变得一团糟...... 您使用哪种语言?编译/解释? 我在家里的项目:java、arduino (c++, c)。工作:主要是python。 我发现这篇 git-project-dependencies 的帖子可能对您的问题有很好的指导作用。 【参考方案1】:

可能像 Apache Ivy 这样的依赖管理器的杀手级特性是传递依赖解决和冲突管理。使用 git 子模块这是不可行的。

来自Apache Ivy features页面:

想象一个经常被软件团队重用的组件,并且该组件具有自己的依赖关系。如果没有一个好的依赖管理工具,每次重用这个组件时,它的所有依赖都必须重复。使用 Apache Ivy,情况有所不同:只需为组件编写一次依赖文件,即可在任何时候重用该组件时从已经完成的工作中受益。

我认为重要的另一个功能是:

下载已经编译好的包,而不必每次都编译

依赖关系报告

总而言之,我只会在你的依赖树真的是并且编译依赖代码很便宜时才建议使用 git 子模块。

【讨论】:

以上是关于IOS-WorkSpace管理两个项目并相互依赖的主要内容,如果未能解决你的问题,请参考以下文章

如何处理这两个相互依赖的信号?

Git子模块与依赖管理?

.项目集项目组合管理

.项目组项目组合管理

在 NDK w/gradle 上编译两个项目,其中一个依赖于另一个的二进制文件

开发相互依赖的 npm 包的最佳工作流程