私たちのphonegapアプリはiphoneシミュレーター用に正常にビルドされますが、iphoneでアプリをビルドするときにリンカーエラーを生成します。変更されたのは、testflightとテストアプリのインストールだけでした。
Testflightとテストアプリはすでに削除されていますが、リンカーエラーは残ります。
これを修正する方法についてのアイデアはありますか?
Xcode5とphonegap3.4を使用しています。
エラー:
ld: warning: ignoring file /Users/c/Library/Developer/Xcode/DerivedData/s-fhgxmhdprdjvwahdbgwuagoragit/Build/Products/Debug-iphoneos/libCordova.a, file was built for archive which is not the architecture being linked (arm64): /Users/c/Library/Developer/Xcode/DerivedData/s-fhgxmhdprdjvwahdbgwuagoragit/Build/Products/Debug-iphoneos/libCordova.a
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_CDVWebViewDelegate", referenced from:
objc-class-ref in CDVInAppBrowser.o
"_OBJC_METACLASS_$_CDVViewController", referenced from:
_OBJC_METACLASS_$_MainViewController in MainViewController.o
"_OBJC_CLASS_$_CDVPlugin", referenced from:
_OBJC_CLASS_$_CDVDevice in CDVDevice.o
_OBJC_CLASS_$_CDVConnection in CDVConnection.o
_OBJC_CLASS_$_LowLatencyAudio in LowLatencyAudio.o
_OBJC_CLASS_$_CDVLogger in CDVLogger.o
_OBJC_CLASS_$_CDVInAppBrowser in CDVInAppBrowser.o
_OBJC_CLASS_$_InAppPurchase in InAppPurchase.o
"_OBJC_METACLASS_$_CDVPlugin", referenced from:
_OBJC_METACLASS_$_CDVDevice in CDVDevice.o
_OBJC_METACLASS_$_CDVConnection in CDVConnection.o
_OBJC_METACLASS_$_LowLatencyAudio in LowLatencyAudio.o
_OBJC_METACLASS_$_CDVLogger in CDVLogger.o
_OBJC_METACLASS_$_CDVInAppBrowser in CDVInAppBrowser.o
_OBJC_METACLASS_$_InAppPurchase in InAppPurchase.o
"_OBJC_CLASS_$_CDVViewController", referenced from:
_OBJC_CLASS_$_MainViewController in MainViewController.o
objc-class-ref in CDVDevice.o
"_CDVLocalNotification", referenced from:
-[AppDelegate application:didReceiveLocalNotification:] in AppDelegate.o
"_OBJC_METACLASS_$_CDVCommandDelegateImpl", referenced from:
_OBJC_METACLASS_$_MainCommandDelegate in MainViewController.o
"_OBJC_CLASS_$_CDVPluginResult", referenced from:
objc-class-ref in CDVDevice.o
objc-class-ref in CDVConnection.o
objc-class-ref in LowLatencyAudio.o
objc-class-ref in CDVInAppBrowser.o
objc-class-ref in InAppPurchase.o
"_OBJC_CLASS_$_CDVCommandDelegateImpl", referenced from:
_OBJC_CLASS_$_MainCommandDelegate in MainViewController.o
"_OBJC_CLASS_$_CDVUserAgentUtil", referenced from:
objc-class-ref in CDVInAppBrowser.o
"_OBJC_CLASS_$_CDVCommandQueue", referenced from:
_OBJC_CLASS_$_MainCommandQueue in MainViewController.o
"_OBJC_METACLASS_$_CDVCommandQueue", referenced from:
_OBJC_METACLASS_$_MainCommandQueue in MainViewController.o
"_CDVPluginHandleOpenURLNotification", referenced from:
-[AppDelegate application:handleOpenURL:] in AppDelegate.o
-[CDVInAppBrowser openInSystem:] in CDVInAppBrowser.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
また、意図せずにxcode 5.1にアップグレードしたため、問題が発生したようです。 phonegap3.4とxcode5.1は、いくつかの変更を加えない限り互換性がありません。
解決策は次のとおりです: http://shazronatadobe.wordpress.com/2014/03/12/xcode-5-1-and-cordova-ios/
この種の問題はXcodeの更新中に発生しますが、使用しているサードパーティのツールはこのアーキテクチャarmv64
で更新されない場合があります。
したがって、XCodeからプロジェクトナビゲータをクリックします。
プロジェクトからTargets
をクリックし、プロジェクトからBuildSettings
をクリックします。
その中でValid Architectures
を見つけます。
それをダブルクリックして、そこからarmv64
を削除します。
Armv7とarmv7s
のみがあることを確認してください。
私の場合、これは私のために働いた。
プロジェクトをクリーンアップしてビルドします。これで正常に動作するはずです。
それがあなたを助けることを願っています。
[〜#〜]編集[〜#〜]
現在、2015年2月1日、Appleは、arm64アーキテクチャがサポートされていないアプリを許可しません。
したがって、提出するすべてのアプリがarm64をサポートしていることを確認してください。
これが些細な答えのように思えるかもしれませんが、リンカーエラーが表示された場合は通常、次の手順を実行します。
git submodule update --init --recursive
すすぎ、繰り返します。
正しく参照されていないモジュールがある場合は、ビルドフェーズに進み、問題のあるモジュールを削除して、再度追加します。