我有一个iOS应用程序项目及其使用Alamofire和FileKit等库的共享扩展。一切都与以下Podfile
:
target 'myApp' do
use_frameworks!
pod 'BRYXBanner'
end
target 'myAppShareExtension' do
use_frameworks!
pod 'FileKit', '~> 4.0.1'
pod 'Alamofire', '~> 4.4'
end
然后,我想使用SVProgressHUD
。首先,我刚刚将它添加到主应用程序,一切都很好。当我想在扩展中使用它时,问题就开始了。从那时起,我多次更改了Podfile,并且没有人允许我在应用程序和扩展程序中使用它。更糟糕的是,我甚至无法在主应用程序中再次使用它。只要我将其添加到Podfile
,我的应用就无法编译。即使Alamofire
和FileKit
也无法编译。
这是我的新Podfile,唯一一个在pod install
期间不会产生任何错误的文件。
platform :ios, '10.2'
use_frameworks!
target 'myApp' do
target 'myAppShareExtension' do
pod 'SVProgressHUD', :git => 'https://github.com/SVProgressHUD/SVProgressHUD.git'
pod 'Alamofire', '~> 4.0'
pod 'FileKit', '~> 4.0.1'
end
end
当我尝试编译时,即使没有尝试导入SVProgressHUD也不使用它,我有以下错误:
'sharedApplication' is unavailable: not available on iOS (App Extension) - Use view controller based solutions where appropriate instead.
请注意,当我使用后一个Podfile时,我的扩展目标名为Pods-myApp-myAppShareExtension
,而它应该是Pods-myAppShareExtension
,这让我认为问题来自podfile
如果您对Podfile语法,构建环境等有任何建议,请不要犹豫。我可以提供有关
的其他信息编辑:请注意,我尝试了不同的构建设置选项,也许我搞砸了那些东西。
答案 0 :(得分:2)
在您看到错误的位置后,您将了解问题所在。
#if !defined(SV_APP_EXTENSIONS)
UIInterfaceOrientation orientation = UIApplication.sharedApplication.statusBarOrientation;
#else
UIInterfaceOrientation orientation = CGRectGetWidth(self.frame) > CGRectGetHeight(self.frame) ? UIInterfaceOrientationLandscapeLeft : UIInterfaceOrientationPortrait;
#endif
你看到SV_APP_EXTENSIONS
了吗?这意味着如果目标不是App Extensions,它将编译上面的代码,如果是,它将编译底层代码。因此,现在,您需要它在App Extension目标中工作,您需要将预处理器宏添加到App Extension目标。