如何消除有关 MobileCoreServices 和 AssetsLibrary 的 Xcode 11.4 警告?

Posted

技术标签:

【中文标题】如何消除有关 MobileCoreServices 和 AssetsLibrary 的 Xcode 11.4 警告?【英文标题】:How to silence Xcode 11.4 warnings about MobileCoreServices and AssetsLibrary? 【发布时间】:2020-05-26 11:26:18 【问题描述】:

升级到Xcode 11.4 beta后,我收到了来自Pods 子项目的警告(具体来说,来自YYImageBranch 目标):

目标完整性:MobileCoreServices 已重命名。请改用 CoreServices。

目标完整性:AssetsLibrary 已弃用。请考虑改用照片。

我的Podfile 中有inhibit_all_warnings!,但它对那些没有影响。

有没有办法让这些警告静音,直到这些 pod 的创建者修复它们?

【问题讨论】:

更改podspec的依赖部分,将MobileCoreServices改为CoreServices 如果您愿意 fork pod 的存储库,这会有所帮助,但是据我所知,没有办法使用 Cocoa Pods 安装挂钩来修补 Podspec 我遇到了同样的问题,原因是第 3 方库不是以 Pod 形式出现的。我真的需要一种方法来关闭该特定警告,但它似乎不存在。 【参考方案1】:

将平台 :ios, '13.0' 更改为 平台:ios,iOS/Podfile 中的“11.0”

对我来说就像一个魅力!

【讨论】:

感谢您的关注,但为了消除警告而更改部署目标并不是一个好主意。【参考方案2】:

静音此警告:

    打开 Pod 目标的构建设置 选择构建选项 将框架(例如 AssetsLibrary)添加到 Validate Workspace - Ignored Frameworks

【讨论】:

【参考方案3】:

我注意到从Pods/Frameworks/iOS 项目导航组中手动删除这两个框架可以解决这些警告。由于这两个框架都嵌入到 iOS 本身(不是应用程序包)中,因此删除它们在运行时没有任何影响。以下是如何在Podfile post-install hook 中自动执行此操作:

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

如果这留下了一个悬而未决的(null) 引用,您可以执行以下操作:

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

【讨论】:

以上是关于如何消除有关 MobileCoreServices 和 AssetsLibrary 的 Xcode 11.4 警告?的主要内容,如果未能解决你的问题,请参考以下文章

XCode 服务器:打开模块“MobileCoreServices”的导入文件:权限被拒绝

需要有关 LSApplicationWorkspace.h 头文件的更多信息

修改图片及图片上传

噪音消除如何在 android 中工作?

页面速度 - 消除渲染阻止

乔丹消除浮动到浮动的论点