1

phonegap を介して生成された iOS プロジェクトにテスト ターゲットを追加しようとすると、リンカー エラーが発生します。私のプロジェクト内のcordovaプロジェクトが見つからないようです(私は思う)ので、テストを実行するとエラーがスローされます。

私はしばらく検索しましたが、誰もこのエラーを持っていません。コルドバ プロジェクトのネイティブ ユニット テストを作成することさえ可能ですか? - 明確にするために、Cookie にネイティブ コードを使用しており、それを単体テストしたいと考えています。

エラーは次のとおりです。

Undefined symbols for architecture i386:
"_CGRectZero", referenced from:
  +[CDVUserAgentUtil originalUserAgent] in libCordova.a(CDVUserAgentUtil.o)
"_OBJC_CLASS_$_ALAssetsLibrary", referenced from:
  objc-class-ref in libCordova.a(CDVURLProtocol.o)
"_OBJC_CLASS_$_CLLocation", referenced from:
  l_OBJC_$_CATEGORY_CLLocation_$_JSONMethods in libCordova.a(CDVShared.o)
"_UTTypeCopyPreferredTagWithClass", referenced from:
  ___30-[CDVURLProtocol startLoading]_block_invoke in libCordova.a(CDVURLProtocol.o)
"_kUTTagClassMIMEType", referenced from:
  ___30-[CDVURLProtocol startLoading]_block_invoke in libCordova.a(CDVURLProtocol.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

どんな助けでも素晴らしいでしょう!!!! ありがとう。

4

1 に答える 1

0

基本的に、Cordova は (実行時にリンクされる) Apple フレームワークに依存しています。これらのフレームワークは、phonegap 内の Cordova プロジェクト内にパックされていません。

必要なことは、関連する Apple フレームワークをプロジェクトに追加することです。たとえば、未定義のシンボルの 1 つに「_OBJC_CLASS_$_ALAssetsLibrary」があります。これは、AssetsLibrary.framework 内のオブジェクトです。したがって、このフレームワークをプロジェクトに追加します (そして、それがアプリのターゲットにリンクされていることを確認してください)。

これらの未定義のシンボルのそれぞれについて、関連すると思われるシンボルの部分 (通常は最初のアンダースコアの後の部分または _OBJC_CLASS_$_ の後の部分) を Google/Bing して、シンボルがどのフレームワークの一部であるかを確認し、そのフレームワークを事業。

以下の例で、IOBluetooth.framework と Cocoa.framework が MyTestApp とどのようにリンクされているかに注意してください。

ここに画像の説明を入力

于 2013-08-24T01:11:27.070 に答える