4

インストールした CocoaPods を使用して WatchKit アプリを正常に実行できず、「dyld: ライブラリが読み込まれていません...理由: イメージが見つかりません」というエラーが表示されます。

環境は次のとおりです。Swift 2.0、WatchKit 2.0、CocoaPods 0.38.2、Xcode 7 Beta 4、WatchKit 拡張機能を備えた iPhone アプリ用に開発した内部 CocoaPods を使用するプロジェクト。

メイン アプリと WatchKit 拡張機能の両方から呼び出したい共通コードを含む、内部で使用される CocoaPod を多数作成しました。以下は Podfile です。

source 'https://github.com/CocoaPods/Specs.git'
source 'http://<local-git>/podspecs.git'

use_frameworks!

target 'Destinations511' do
  platform :ios, '9.0'

  pod 'GoogleMaps'
  pod 'APIKit', :path => '~/Documents/Libraries/APIKit'
  pod 'DestinationsKit', :path => '~/Documents/Libraries/DestinationsKit'
end

target 'Destinations511 WatchKit Extension' do
   platform :watchos, '2.0'

   pod 'APIKit', :path => '~/Documents/Libraries/APIKit'
   pod 'DestinationsKit', :path => '~/Documents/Libraries/DestinationsKit'
end

メインアプリをビルドでき、期待どおりに動作します。ウォッチ キット アプリをコンパイルできますが、実行すると次のようになります。

 dyld: Library not loaded: @rpath/APIKit.framework/APIKit Referenced from (...) Reason: image not found.

次のような他のdylibの問題について言及されている解決策を試しました。

  • Target-> Build Settings-> Runpath Search Paths に @executable_path/Frameworks が含まれていることを確認しました
  • APIKit.framework を Target->General->Embedded Binaries に追加しようとしました(何らかの理由で、フレームワークを選択しても追加されません)
  • Podfile によって分解され、再構築されました。
  • Target->General->Linked Frameworks and Libraries に APIKit.framework を追加

Xcode で Pods ディレクトリを見ると、各フレームワークの 2 つのインスタンスが表示されます (これは、アプリ用に 1 つとウォッチ用に 1 つあるためだと思います)。正常にビルドして iPhone アプリを実行している場合でも、それらはすべて赤のままです。

関連している可能性がありますが、解決方法がわからないのは、(ターゲットに関係なく) コンパイルすると、次の行に沿って多くの警告が表示されることです。

 ld: warning: linking against dylib not safe for use in application extensions: /Users/dan/Library/Developer/Xcode/DerivedData/MyProject-dlixiemzyqyquocjthlseirhdxcm/Build/Products/Debug-watchsimulator/Pods_MyProject_WatchKit_Extension.framework/Pods_MyProject_WatchKit_Extension

完全にするために、ここに APIKit の PodSpec を示します。

Pod::Spec.new do |s|

  s.name         = "APIKit"
  s.version      = "1.1"
  s.summary      = "APIKit provides the basic classes and methods common to a number of our apps"

  s.homepage     = "http://.../apikit.git"
  s.license      = { :type => "MIT", :file => "LICENSE" }
  s.author             = { "me" => "me@me.com" }

  s.platform     = :ios
  s.ios.deployment_target = "9.0"
  s.watchos.deployment_target = "2.0"

   s.source       = { :git => "http://my-git-location/apikit.git", :tag => "#{s.version}" }

  s.source_files  = "APIKit"

  s.frameworks = "UIKIt", "CoreLocation"

  s.requires_arc = true

end
4

1 に答える 1

0

これは少し直感に反しており、ポッドをインストール/更新すると CocoaPods から警告が表示されますが、Swift が含まれていても、WatchKit 拡張機能のビルド設定で に設定EMBEDDED_CONTENT_CONTAINS_SWIFTすることでこの問題を修正しました。NOアプリは引き続き実行され、App Store にありますが、CocoaPods はこの設定についてまだ警告します。

于 2016-02-12T05:58:25.500 に答える