我的任务是将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.:我尝试通过在字段内创建一个包含数据的实例和通过单例来尝试 - 结果仍然是一个错误。
配置包的代码应该写成这样:
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 子文件夹中。在此处输入图像描述