如何在Xcode 11中删除Swift包依赖?

esbemjvw  于 2022-12-19  发布在  Swift
关注(0)|答案(9)|浏览(772)

我在Xcode 11中有一个项目,我向其中添加了Swift Package Manager依赖项。我现在意识到,我不再需要以前添加到项目中的包依赖项之一。
如下图所示,File > Swift Packages下没有从Swift Package Manager中删除此项目的打包程序的选项。

我试过从project.xcworkspace/xcshareddata/swiftpm/Package.resolved文件的数组中删除这个包,但是它仍然没有从Xcode中删除它,并且下一次我执行Update to Latest Package Versions时,它会将这个条目重新写入Package.resolved文件。
如何删除项目中的Swift Package Manager依赖项?

b4qexyjb

b4qexyjb1#

1.开放Xcode
1.选择您的项目
1.看中间的顶部
1.选择Swift软件包管理器菜单
您将能够管理您的软件包(添加/删除)

tmb3ates

tmb3ates2#

    • Swift程序包管理器(SPM)依赖关系**
    • 添加依赖项**
1. Project Settings contains information about dependencies. 
2. File -> Swift Packages -> Add Package Dependency...
3. Target -> General -> Frameworks, Libraries, and Embedded Content -> Add Items -> Add Other... -> Add Package Dependency...

目标设置包括依赖项中的产品

    • 编辑相关性**

要编辑URL,可以使用repositoryURL编辑.pbxproj

    • 删除相关性**
Project -> Packages -> <Select dependency> -> -

Local Swift Package Manager(SPM)(https://stackoverflow.com/a/66715856/4770877)
iOS Dependency manager(https://stackoverflow.com/a/59257708/4770877)

agxfikkp

agxfikkp3#

除了Pierre的回答,这让我抓狂,我有一个子项目,我正在编辑,我忘记了(它是在一个子文件夹中).即使我在“Swift Packages”窗格中删除了它,它仍然会回来.删除子文件夹引用确保PM依赖项消失.

798qvoo8

798qvoo84#

我删除了swift包,但是它的依赖性仍然显示在项目中。我看到swift包仍然在左窗格底部的Frameworks文件夹中,

我把它从那里移走了,依赖关系也消失了。

bnlyeluc

bnlyeluc5#

首先,我从Package.swift的依赖项和目标中删除了它,然后用swift package generate-xcodeproj重新生成了我的项目文件

ecfdbz9o

ecfdbz9o6#

嵌套Swift包依赖项

背景

正如其他答案所提到的,我们可以通过File-〉Swift Packages-〉Add Package Dependency工作流将Swift Packages导入到一个项目中,这对大多数应用程序都有效。我添加了这个答案,作为对带有 * 嵌套依赖项 * 的包的进一步优化。
Swift包不仅可以通过Git源代码 checkout 导入,还可以通过一个或多个包产品导入。在我的例子中,我希望保留包,因为我在一个目标中使用了它,但在另一个目标中没有使用它。有时一个包包含多个我们不需要的依赖项,这是一个很好的机会来修剪未使用的依赖项。

未使用的导入

我最近犯了一个错误,我自动导入了Swift Package依赖项引用的所有模块,甚至是我不需要的模块。这很常见,因为Package可以有多个Product,每个Product为不同的应用程序公开不同的API。
如果您不确定是否需要导入,请选中它并将其删除。例如,一个包可能包含一个Objective-C模块,该模块会添加额外的不必要的导入。

在我的例子中,我导入了一个Swift包,它是通过多个嵌套库导出的:OHHTTPStubsOHHTTPStubsSwift的值。

总体思路

我们可以通过构建阶段或目标常规设置选项卡删除嵌套的Swift软件包依赖项,而无需删除软件包本身。删除不必要的依赖项是一种很好的做法,可以节省应用的内存占用并简化构建时间。

单元/UI测试的嵌套依赖项

每个目标应该只导入它使用的库。
规则:
1.当为整个项目导入时,仅导入您实际需要的Swift Package Manager产品。如果您只使用 Package 器子规范,则仅导入 Package 器子规范。
1.宿主应用程序目标不需要导入UI测试库。我们可以从"框架"、"库"和"嵌入内容"的"目标常规"选项卡中安全地删除这些库。这将自动取消产品与此目标的"生成阶段"选项卡的链接。
1.我们的UI测试目标可以通过构建阶段-〉将二进制文件与库链接来导入它所需要的包产品。如果依赖项仅用于UI测试,请从主机应用程序目标框架、库和嵌入式内容中删除它。
1.单元测试目标无法链接到宿主应用程序中未嵌入的库。因此,我们需要在"框架"、"库"和"嵌入内容"的"常规设置"选项卡中将单元测试中使用的产品添加到宿主应用程序目标。我们需要为单元测试目标添加任何"将二进制文件与库链接"的产品。

我的经验

OHHTTPStubsSwift是等效的Swift CocoaPods子规范,它在ObjC API上添加了更好的API Package 器,但 * 已经 * 导入了ObjC API(OHHTTPStubs)。
我从主机目标中删除了包产品,因为我只在UI测试中使用它。然后我只通过构建阶段导入了OHHTTPStubsSwift

7dl7o3gd

7dl7o3gd7#

步骤1.导航到你的项目目录步骤2.找到'your-project.xcodeproj'步骤3.在文本编辑器中打开它,而不是Xcode(你必须使用finder,并通过打开with-all applications -〉文本编辑器来使用任何文本编辑器步骤4.搜索有问题的包的所有示例,例如...我有一个包'UIKit'导致了问题,我只是删除了它的任何示例,并确保不会干扰文件的其余部分。步骤4.使用XCode打开/重新打开XCode项目并享受。

7lrncoxx

7lrncoxx8#

我所找到的没有答案。如果git链接已经断开,必须将 *.xcodeproj/project.pbxproj更改为正确的链接。Xcode将捕获修改并自动更新。

92dk7w1h

92dk7w1h9#

即使在移除pod并重新安装pod后,依赖性仍会不断弹出。

相关问题