我在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依赖项?
9条答案
按热度按时间b4qexyjb1#
1.开放Xcode
1.选择您的项目
1.看中间的顶部
1.选择Swift软件包管理器菜单
您将能够管理您的软件包(添加/删除)
tmb3ates2#
目标设置包括依赖项中的产品
要编辑URL,可以使用
repositoryURL
编辑.pbxproj
Local Swift Package Manager(SPM)(https://stackoverflow.com/a/66715856/4770877)
iOS Dependency manager(https://stackoverflow.com/a/59257708/4770877)
agxfikkp3#
除了Pierre的回答,这让我抓狂,我有一个子项目,我正在编辑,我忘记了(它是在一个子文件夹中).即使我在“Swift Packages”窗格中删除了它,它仍然会回来.删除子文件夹引用确保PM依赖项消失.
798qvoo84#
我删除了swift包,但是它的依赖性仍然显示在项目中。我看到swift包仍然在左窗格底部的Frameworks文件夹中,
我把它从那里移走了,依赖关系也消失了。
bnlyeluc5#
首先,我从Package.swift的依赖项和目标中删除了它,然后用
swift package generate-xcodeproj
重新生成了我的项目文件ecfdbz9o6#
嵌套Swift包依赖项
背景
正如其他答案所提到的,我们可以通过File-〉Swift Packages-〉Add Package Dependency工作流将Swift Packages导入到一个项目中,这对大多数应用程序都有效。我添加了这个答案,作为对带有 * 嵌套依赖项 * 的包的进一步优化。
Swift包不仅可以通过Git源代码 checkout 导入,还可以通过一个或多个包产品导入。在我的例子中,我希望保留包,因为我在一个目标中使用了它,但在另一个目标中没有使用它。有时一个包包含多个我们不需要的依赖项,这是一个很好的机会来修剪未使用的依赖项。
未使用的导入
我最近犯了一个错误,我自动导入了Swift Package依赖项引用的所有模块,甚至是我不需要的模块。这很常见,因为Package可以有多个Product,每个Product为不同的应用程序公开不同的API。
如果您不确定是否需要导入,请选中它并将其删除。例如,一个包可能包含一个Objective-C模块,该模块会添加额外的不必要的导入。
在我的例子中,我导入了一个Swift包,它是通过多个嵌套库导出的:
OHHTTPStubs
和OHHTTPStubsSwift
的值。总体思路
我们可以通过构建阶段或目标常规设置选项卡删除嵌套的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
。7dl7o3gd7#
步骤1.导航到你的项目目录步骤2.找到'your-project.xcodeproj'步骤3.在文本编辑器中打开它,而不是Xcode(你必须使用finder,并通过打开with-all applications -〉文本编辑器来使用任何文本编辑器步骤4.搜索有问题的包的所有示例,例如...我有一个包'UIKit'导致了问题,我只是删除了它的任何示例,并确保不会干扰文件的其余部分。步骤4.使用XCode打开/重新打开XCode项目并享受。
7lrncoxx8#
我所找到的没有答案。如果git链接已经断开,必须将 *.xcodeproj/project.pbxproj更改为正确的链接。Xcode将捕获修改并自动更新。
92dk7w1h9#
即使在移除pod并重新安装pod后,依赖性仍会不断弹出。