Ubuntu 上的 Swift CryptoKit

标签 swift swift-package-manager apple-cryptokit

我正在尝试将一个小型 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-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"]),
    ]
)
现在我可以从我的手机向服务器发送一条加密消息,然后在我的 ubuntu 笔记本电脑上本地解密它,感谢 swift-crypto 团队!

关于Ubuntu 上的 Swift CryptoKit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63409275/

相关文章:

Swift 包无法为 watchOS 编译

java - 尝试解密时 CryptoKit authenticationFailure

ios - Swift:根据唯一值合并数组中的 2 个或更多元素自定义对象

ios - 我们可以从我们的 ios 应用程序启动我们的应用程序设置页面吗?

swift - 是否有 swiftc 编译器优化来删除不必要的大变量?

ios - 未找到 Package.swift list ("has no Package.swift manifest for ...")

swift - 如何在 Swift 包管理器库中包含 Assets /资源?

ios - 解密 AES/GCM/PKCS5Padding iOS Swift

swift - 如何访问 CryptoKit 中 SymmetricKey 的底层 key ?

ios - 升级到 Firebase 5 并遇到身份验证问题。无法转换“(用户?,错误?)类型的值