在现有的xcode项目上使用swift包管理器

jes*_*c29 15 xcode ios swift swift-package-manager

我是swift和xcode世界的新手,所以我在尝试将软件包集成到我的项目时遇到了问题.

我想使用以下命令添加Alamofire依赖项:

在我的根项目文件夹中:

swift init
Run Code Online (Sandbox Code Playgroud)

这会创建Package.swift文件,我在里面添加依赖项,然后运行:

swift build
Run Code Online (Sandbox Code Playgroud)

一切似乎都没问题,但是当我尝试导入我的库时,我的项目是:

import Alamofire
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,它说该模块无法识别.所以我的问题是,在不崩溃所有内容的情况下,将Package Manager与对现有项目的依赖关系进行集成的正确步骤是什么.

更新:

swift build
Run Code Online (Sandbox Code Playgroud)

输出:

Resolved version: 4.3.0
Compile Swift Module 'Alamofire' (17 sources)
Compile Swift Module 'Sample' (1 sources)
Run Code Online (Sandbox Code Playgroud)

我的Package.swift是:

import PackageDescription

let package = Package(
    name: "Sample",
    dependencies: [
        .Package(url: "https://github.com/Alamofire/Alamofire.git", majorVersion: 4)
    ]
)
Run Code Online (Sandbox Code Playgroud)

Ben*_*rth 23

如果您使用的是 Xcode 项目,则不需要(也不应该使用)Package.swift,只需单击 Xcode 中 Swift Packages 中的加号图标,然后添加 Swift Package 的 GitHub URL,该库也将是自动添加到您的目标(按照下面的 GIF 操作,或单击此处图像中的“添加”图标):

额外信息

  • 不一致问题:您无法为同一目标同时维护 Xcode 项目和 Swift.package。它们不同步,并且会变得不一致,因此根据不同的工具,您将得到不同的构建:令人困惑。您过去可以基于Package.swiftusing创建 xcodeproj swift package generate-xcodeproj,但这已被弃用。您对此 Xcodeproj 所做的更改未反映在原始版本中Package.swift)。
  • xcodebuildvs. :方便的是,如果在你的同一个目录下swift build没有,会自动生成方案供你使用,这样你就不必使用. 例如,运行以查看从文件生成的方案列表,然后使用这些方案之一。不方便的是,没有办法/配置来使用.xcodeprojPackage.swiftxcodebuildswift buildxcodebuild -listPackage.swiftxcodebuildPackage.swift


Ene*_*nso 7

Swift Package Manager是一个独立的工具,它允许在没有Xcode的情况下管理依赖项和构建项目.它可以为您生成Xcode项目swift package generate-xcodeproj.

但是,目前,Swift Package Manager仅支持为macOS和Linux平台构建项目.为iOS,tvOS和watchOS构建项目的唯一方法是使用Xcode,其中包括这些平台所需的SDK.

有一些方法可以使用Swift Packages Manager来管理iOS/tvOS/watchOS的依赖项,但这并不容易,需要手动工作.如果您有兴趣,请查看https://github.com/j-channings/swift-package-manager-ios

除此之外,我建议使用CarthageCocoaPods.


归档时间:

查看次数:

6249 次

最近记录:

6 年,5 月 前