Pods中引用 YYText 出现警告 MobileCoreService has been renamed. Use CoreServices instead.

问题是这样的:

问题分析:

这个警告提示已经非常明确的指出了问题所在,只要把Pods中的第三方框架(这里是YYText)所依赖的 MobileCoreService 换成 CoreService 就可以。

Pods中引用 YYText 出现警告 MobileCoreService has been renamed. Use CoreServices instead._第1张图片

或者 修改 Validate Workspace - Ignored Frameworks 也可以消除警告
Pods中引用 YYText 出现警告 MobileCoreService has been renamed. Use CoreServices instead._第2张图片

问题难点:

以上两种方法可以暂时性的解决警告,但是一旦执行了 pod install 或者类似的指令对库镜进行了更新那么所设置的配置信息就会被重置;需要再次重复设置才可以,每次来这么一下可不是个好的体验。

尝试解决:

从问题源头已经很清晰了,现在需要解决的是pod更新后能够保持状态就可以,也就是需要在 Podfile 中写点脚本

post_install do |installer|
    installer.pods_project.frameworks_group["iOS"]["MobileCoreServices.framework"].remove_from_project
end

然后更新pod pod update ,Build一下哎呦嘿似乎解决了警告消除了,看一下引用Frameworks的情况

Pods中引用 YYText 出现警告 MobileCoreService has been renamed. Use CoreServices instead._第3张图片

这是个什么鬼?似乎解决得不完美啊, project.pbxproj 中的并没有被移除
对脚本进行升级

post_install do |installer|
  framework = installer.pods_project.frameworks_group["iOS"]["MobileCoreServices.framework"]
  framework.referrers.each do |ref|
      if ref.isa == "PBXBuildFile"
          ref.remove_from_project
      end
  end
  framework.remove_from_project
end

pod update,Buid 好了完美。

扩展:

1.PBXBuildFile

PBXBuildFile 代表文件元素,被PBXBuildPhase等作为文件包含或被引用的资源,其实里面fileRef指向最终的文件PBXFileReference。

2.AssetsLibrary 也可以通过类似的方法解决
post_install do |installer|
  framework = installer.pods_project.frameworks_group["iOS"]["AssetsLibrary.framework"]
  framework.referrers.each do |ref|
      if ref.isa == "PBXBuildFile"
          ref.remove_from_project
      end
  end
  framework.remove_from_project
end

参考:
How to silence Xcode 11.4 warnings about MobileCoreServices and AssetsLibrary?
Xcode工程文件pbxproj
Xcode工程文件project.pbxproj小结

你可能感兴趣的:(Pods中引用 YYText 出现警告 MobileCoreService has been renamed. Use CoreServices instead.)