创建CocoaPod时添加.xcassets至podspec遇验证错误
解决CocoaPod验证时的xcassets资源引用错误
我之前也碰到过一模一样的问题,这是因为你的resource_bundles配置重复匹配了xcassets目录里的Contents.json文件,导致CocoaPods处理资源时出现冲突。先把你遇到的错误贴出来:
- ERROR | [iOS] unknown: Encountered an unknown error (Unable to find other source ref for /Users/jhgonzalez/Desktop/MyApp/Me/cocoaPod/JCore-ui/LibraryComponents/Resources/JCore-ui.xcassets/Contents.json for target JCore-ui.) during validation.
问题根源
你在resource_bundles里同时声明了*.xcassets和**/*.json两个规则,而xcassets目录本身就自带Contents.json文件。CocoaPods会先完整处理整个xcassets资源包,接着又试图单独处理这个目录里的json文件,这种重复引用就引发了验证错误。
解决步骤
简化resource_bundles配置
完全不需要单独匹配json文件,xcassets作为资源bundle会被完整打包,里面的所有子文件(包括Contents.json)都会被正确识别和处理。把你的配置改成:s.resource_bundles = { 'JCore' => ['LibraryComponents/Resources/*.xcassets'] }如果存在独立的JSON文件(不在xcassets内)
要是你的Resources目录下还有其他不属于xcassets的json文件,建议把它们放到单独的子目录(比如LibraryComponents/Resources/StandaloneJSON/),然后明确指定路径,彻底避免和xcassets里的文件冲突:s.resource_bundles = { 'JCore' => [ 'LibraryComponents/Resources/*.xcassets', 'LibraryComponents/Resources/StandaloneJSON/**/*.json' ] }清理缓存后重新验证
缓存有时候会残留旧的配置信息,执行以下命令清理后再跑验证:pod cache clean --all pod spec lint JCore.podspec --verbose
按照上面的步骤调整后,应该就能顺利通过podspec验证了。
内容的提问来源于stack exchange,提问作者Josué H.
相关产品推荐
相关产品推荐

