从 Xcode 项目访问 swift 包内生成的 R.swift 库资源

问题描述 投票:0回答:1

我的任务是将R.swift引入我们自己的SPM中,以便应用程序本身的代码仍然可以访问生成的Rswift资源。

我们的包设置如下所示

let package = Package(
    name: "OwnPackage",
    products: [
        .library(
            name: "OwnPackage",
            targets: ["OwnPackage"]),
    ],
    dependencies: [
        .package(url: "https://github.com/mac-cain13/R.swift.git", exact: "7.5.0")
    ],
    targets: [
        .target(
            name: "OwnPackage",
            dependencies: [
                .product(name: "RswiftLibrary", package: "R.swift")
            ],
            resources: [.process("Resources")],
            plugins: [.plugin(name: "RswiftGeneratePublicResources", package: "R.swift")]
        ),
        .testTarget(
            name: "OwnPackageTests",
            dependencies: ["OwnPackage"]),
    ]
)

在我们自己的包中我创建了一个文件

import RswiftResources

public final class RSwiftTransfer {
    public static let rtext = R.string.localizable
    public static let rimage = R.image
}

从逻辑上讲,一切都应该有效,我应该可以从项目代码访问 Rswift 资源,但我收到错误在此处输入图像描述。请告诉我如何解决这个问题? P.S.:我尝试通过在字段内创建一个包含数据的实例和通过单例来尝试 - 结果仍然是一个错误。

swift code-generation swift-package-manager r.swift
1个回答
0
投票

配置包的代码应该写成这样:

import PackageDescription

let package = Package(
    name: "OwnPackage",
    platforms: [.iOS(.v14)],
    products: [
        .library(
            name: "OwnPackage",
            targets: ["OwnPackage"]),
    ],
    dependencies: [
        .package(url: "https://github.com/mac-cain13/R.swift.git", exact: "7.5.0")
    ],
    targets: [
        .target(
            name: "OwnPackage",
            dependencies: [
                .product(name: "RswiftLibrary", package: "R.swift")
            ],
            plugins: [.plugin(name: "RswiftGeneratePublicResources", package: "R.swift")]
        )
    ]
)

然后在包中创建一个文件,在里面写入类似这样的内容即可:

public final class Generated {
    public static let rtext = R.string.localizable
    public static let rimage = R.image
}

构建完项目后,只需在项目文件中写入 import OwnPackage 即可访问Generated.rtext和Generated.rimage以及其中的资源。 文件本身应放置在 Sources 子文件夹中。在此处输入图像描述

© www.soinside.com 2019 - 2024. All rights reserved.