pod 更新后编译时出现错误“'sharedApplication' 不可用:在 iOS (App Extension) 上不可用....”

Posted

技术标签:

【中文标题】pod 更新后编译时出现错误“\'sharedApplication\' 不可用:在 iOS (App Extension) 上不可用....”【英文标题】:Error "'sharedApplication' is unavailable: not available on iOS (App Extension)...." when compiling after pod updatepod 更新后编译时出现错误“'sharedApplication' 不可用:在 iOS (App Extension) 上不可用....” 【发布时间】:2015-08-16 01:36:13 【问题描述】:

您有一个使用 cocoapods 的项目(包括应用程序扩展)。 (带有 Parse、Bolts 等库)。

之前一切正常(使用 bolts 1.1.5 库),但是,当我运行 pod 更新(Bolts 1.2.0)时,我现在遇到了一些错误:

"/Volumes/project 2/Pods/Bolts/Bolts/ios/BFAppLinkNavigation.m:100:29: 'sharedApplication' 不可用:在 iOS 上不可用(应用程序扩展) - 在适当的情况下使用基于视图控制器的解决方案。 "

有什么办法解决这个问题吗?

【问题讨论】:

你想使用App Links吗?如果您不使用它,您可以尝试将pod 'Bolts/Tasks' 添加到您的Podfile 中。这是一个子规范。 哦,听起来不错,我试试!你从哪里得到这方面的信息? 我的 pod 中没有直接的 Bolts,它是其中一个的依赖项... source 'github.com/CocoaPods/Specs.git' platform :ios, '7.0' link_with 'MainTarget', 'Widget1001 ' pod 'GoogleAnalytics', '~> 3.0' pod 'Parse', '~> 1.2' pod 'ParseUI' pod 'ParseFacebookUtilsV4', '~> 1.3' pod 'FMDB', '~> 2.2' pod 'NGAParallaxMotion', '~> 1.0' pod 'EDStarRating', '~> 1.1' pod 'skpsmtpmessage', '~> 0.0' pod 'CZPhotoPickerController', '~> 1.2' pod 'AFNetworking', '~> 2.3' pod 'SVProgressHUD', '~> 1.1' 我在这里创建了一个问题:github.com/BoltsFramework/Bolts-iOS/issues/… 【参考方案1】:

Cocoapods 非常有用(我敢肯定),但是它们被设计为与应用程序一起使用,而不是应用程序扩展,最终您会失去对它们在更新期间引入的功能的控制,因此您需要更加谨慎地对待您使用哪些版本的库,具体取决于它们使用的 API。

对于 Bolts 1.2.0,显然决定使用sharedApplication,因此不适合在应用扩展中使用。

因此,您需要开始使用源代码形式的库,也许每个库都使用git submodule,这样您就可以在上游更新时更新它们。

【讨论】:

由于我的扩展使用同一个 pod,有没有办法使用 pod 推荐来解决这个问题?【参考方案2】:

那是Cocoapods项目的设置问题

你或许可以在这里找到答案

UIApplication.sharedApplication not available

【讨论】:

【参考方案3】:

请参考这里,它将帮助您:

https://github.com/AFNetworking/AFNetworking/issues/2119

【讨论】:

我也遇到了应用扩展问题,通过在相应文件中添加#define AF_APP_EXTENSIONS 解决。【参考方案4】:

我已经通过将 cocoapods 降级到 0.35.2 解决了这个问题

如果你有更干净的解决方案,我愿意!

【讨论】:

【参考方案5】:

对于那些因为 Xcode 13 Beta 3 而遇到此问题的人,您可以在您的应用程序中解决此错误,或者通过将方法显式标记为不可用来打开导致此问题的第三方依赖项的票证。

@available(iOSApplicationExtension, unavailable)

【讨论】:

我在使用 Braze 的 SDK (AppboyKit) 和 Xcode 13 Beta 4 时遇到了这个问题,可以确认 Xcode 13 Beta 5 解决了该错误。

以上是关于pod 更新后编译时出现错误“'sharedApplication' 不可用:在 iOS (App Extension) 上不可用....”的主要内容,如果未能解决你的问题,请参考以下文章

安装 pod Alamofire 时出现错误

Typescript:更新 Firebase 函数依赖项时出现编译错误

pod 安装时出现 Flutter 错误:CocoaPods 找不到 pod“Firebase/CoreOnly”的兼容版本

在 AWS EKS 上扩展 pod 时出现 502 ALB 错误

运行“pod spec lint”时出现“错误:预期类型”错误

安装 Alamofire pod 时出现名称冲突错误