导入Swift自定义框架报错Missing required module 'CryptorRSA'求助
可行解决思路
该问题是Xcode 13版本后Swift Package Manager对静态依赖的模块可见性规则调整导致的,可通过以下方案尝试解决:
- 调整ProjectTarget的依赖嵌入规则
打开ProjectTarget的Xcode配置页,进入「Frameworks, Libraries, and Embedded Content」栏,将CryptorRSA的嵌入类型从Do Not Embed修改为Embed & Sign,之后重新导出ProjectTarget框架。此时CryptorRSA会被打包进你导出的.framework内部,上层Objective-C项目无需额外引入CryptorRSA即可直接调用。 - 配置Objective-C项目的模块搜索路径
若不希望在ProjectTarget中嵌套依赖,可打开上层Objective-C项目的Build Settings,找到「Swift Compiler - Search Paths」分组下的「Import Paths」配置项,添加CryptorRSA的编译产物路径:$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/CryptorRSA,同时勾选路径对应的「Recursive」选项。 - 手动创建CryptorRSA的模块映射
如果上述路径配置不生效,可手动在Objective-C项目根目录创建module.modulemap文件,写入以下内容:
之后回到Build Settings,在「Module Map File」配置项中添加你创建的modulemap文件路径,同时确保「Import Paths」已经包含CryptorRSA的头文件所在目录。module CryptorRSA { header "CryptorRSA-Swift.h" export * } - 临时关闭模块校验(不建议生产环境使用)
若仅需要快速验证功能可用性,可在Objective-C项目的Build Settings中找到「Other C Flags」配置项,添加参数-Xclang -fno-modules-validate-system-headers,该方案仅做临时兼容使用,不建议在线上版本中采用。
内容的提问来源于stack exchange,提问作者michaelthedeveloper
相关产品推荐
相关产品推荐

