【问题标题】:swift CryptoKit on UbuntuUbuntu 上的快速 CryptoKit
【发布时间】:2020-08-14 08:31:43
【问题描述】:

我正在尝试将一个小型 swift 程序“main.swift”编译为 Ubuntu 18.08 上的可执行文件。 我使用Swift Package Manager 来管理我的依赖项。在这个非常简单的情况下,我只有一个依赖项,即 open-source CryptoKit。 我有一个 swift 文件,它只是尝试导入 CryptoKit。

import Foundation
import CryptoKit
print("phew")

我的 Package.swift 文件如下所示:

// swift-tools-version:5.2

import PackageDescription

let package = Package(
    name: "decryp",
    dependencies: [
      .package(url: "https://github.com/apple/swift-crypto.git", .upToNextMajor(from: "1.0.1"))
    ],
    targets: [
        .target(
            name: "decryp",
            dependencies: ["swift-crypto"]
        ),
        .testTarget(
            name: "decrypTests",
            dependencies: ["decryp"]),
    ]
)

当我尝试使用 swift build 构建可执行文件时,它会获取存储库,但随后会给出未找到产品的错误。 快速构建的标准输出:

Fetching https://github.com/apple/swift-crypto.git
Cloning https://github.com/apple/swift-crypto.git
Resolving https://github.com/apple/swift-crypto.git at 1.0.2
'decryp' /home/kah/decryp: error: product 'swift-crypto' not found. It is required by target 'decryp'.
warning: dependency 'swift-crypto' is not used by any target

也许我遗漏了一些明显的东西?我仍然是 swift 世界的初学者。

【问题讨论】:

    标签: swift swift-package-manager apple-cryptokit


    【解决方案1】:

    查看swift-crypto Package.swift 提供了线索。 swift-crypto 库名称是“Crypto”,所以我尝试使用它,但它给出了错误:

     error: dependency 'Crypto' in target 'decryp' requires explicit declaration; 
     reference the package in the target dependency with '.product(name: "Crypto", 
     package: "swift-crypto")'
    

    但这说明了该怎么做,所以当我将 Package.swift 更改为以下内容并导入“Crypto”而不是“CryptoKit”时,一切正常!

    // swift-tools-version:5.2
    
    import PackageDescription
    
    let package = Package(
        name: "decryp",
        dependencies: [
          .package(url: "https://github.com/apple/swift-crypto.git", .upToNextMajor(from: "1.0.1"))
        ],
        targets: [
            .target(
                name: "decryp",
                dependencies: [
                  .product(name: "Crypto", package: "swift-crypto")
    ]
            ),
            .testTarget(
                name: "decrypTests",
                dependencies: ["decryp"]),
        ]
    )
    

    感谢 swift-crypto 团队,现在我可以将加密消息从手机发送到服务器,然后在我的 ubuntu 笔记本电脑上本地解密!

    【讨论】:

      猜你喜欢
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-08
      • 1970-01-01
      • 2018-01-12
      • 1970-01-01
      • 2011-04-11
      相关资源
      最近更新 更多