在设备上的tvOS Top Shelf Extension中使用Alamofire时出现“dyld:Library not loaded”错误

时间:2015-10-16 17:02:18

标签: xcode cocoapods alamofire tvos

我为我的tvOS应用程序构建了一个Top Shelf Extension。它在模拟器中正常工作。当我在设备上运行它(开发套件运行tvOS beta 3)并尝试加载Top Shelf Extension时,我的应用程序出现致命错误:

dyld: Library not loaded: @rpath/Alamofire.framework/Alamofire
  Referenced from: /private/var/mobile/Containers/Bundle/Application/5EF46962-235C-4330-9723-623E80E3D8BE/MyApp.app/PlugIns/MyApp TV Services Extension.appex/MyApp TV Services Extension
Reason: image not found

我正在"tvOS" branch使用Xcode 7.1 beta 3,Cocoapods 0.39.0和Alamofire 3.0.0。我的Podfile如下:

platform :tvos, '9.0'
use_frameworks!

target 'MyApp' do

end

target 'MyApp TV Services Extension' do
  pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'tvOS'
  pod 'SwiftyJSON', :git => 'https://github.com/jeffbowen/SwiftyJSON.git', :commit => 'fa3fc27c14602e43f69e8d70da4fc2f9a084a987'
end

不确定这是否是Alamofire,Cocoapods或tvOS beta 3的问题。我被卡住了。

3 个答案:

答案 0 :(得分:1)

原则上你必须在主目标中包含扩展所需的pod。它现在正在为我工​​作,这就是我Podfile的样子:

platform :tvos, '9.0'
use_frameworks!

def shared_pods
  pod 'Alamofire', '~> 3.0'
  pod 'SwiftyJSON', :git => 'https://github.com/jeffbowen/SwiftyJSON.git', :commit => 'fa3fc27c14602e43f69e8d70da4fc2f9a084a987'
end

target 'MyApp' do
  shared_pods
end

target 'MyApp TV Services Extension' do
  shared_pods
end

我学会了shared_pods技巧here

答案 1 :(得分:1)

您需要从开发者帐户中删除设备和配置配置证书,并为这两者创建新证书。创建证书后下载该证书并拖入密钥链访问。现在你可以看到你带有名字的新证书(不要忘记删除以前的证书并从密钥链中删除)所以现在你的工作已经完成并转到: -

  1. 转到xcode select team开发者帐户。
  2. 转到代码登录选择 ios开发人员(在代码签名身份中,为调试和发布选择任何ios sdk的开发人员配置文件。)
  3. 默认设置嵌入式内容 - 包含快速代码
  4. 从设备中删除应用。
  5. Shift + Command + k 来清理构建。
  6. Command + B 以创建新版本。
  7. 一旦Build成功...现在你可以运行( Command + R )并且它正常工作。

答案 2 :(得分:0)

我认为你需要在你的podfile中有这个:

link_with 'MyAppName'

我使用了Alamofire,当与此tvOs项目一起使用时,它可以显示找到的here