8

以前は、Unity 出力 Xcode プロジェクトを問題なくビルドして実行できました。しかし、Apple が iOS アプリの 64 ビット サポートを要求するようになったため、Unity で次の変更を行う必要があります。

Build settings -> Player settings -> Other settings -> Scripting backend -> IL2CPP
Build settings -> Player settings -> Other settings -> Architecture -> Universal

現在の問題は、デバイスで Xcode プロジェクトを正常にビルドおよび実行できないことです。私はこれApple Mach-O linker errorまで得られなかったものを得ています。

Xcodeから取得したエラーは次のとおりです。

ld: warning: directory not found for option '-F-F/Users/user/Desktop/qwer/Frameworks/Plugins/IOS'
ld: warning: directory not found for option '-F"/Users/user/Desktop/qwer/../../Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK"'
duplicate symbol l082 in:
    /Users/user/Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK/VungleSDK.framework/VungleSDK(FMDatabase.o)
    /Users/user/Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK/VungleSDK.framework/VungleSDK(VungleAdViewController.o)
duplicate symbol l084 in:
    /Users/user/Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK/VungleSDK.framework/VungleSDK(VungleVideoPlayer.o)
    /Users/user/Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK/VungleSDK.framework/VungleSDK(VungleAdViewController.o)
ld: 2 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

私が観察したところ、VungleSDK場所に何かあるように見えますか? 上記以外に変更を加えていないので、これは私にとって奇妙です。

この問題を解決する方法を知っている人はいますか?

また、サイドノート:アーキテクチャに切り替えるときにコンパイル時間が遅くなった人はいIL2CPPますか? Universal私はすでに Xcode ビルドをRelease(誰かがオンラインで提案したように) に切り替えましたが、今でもそうです。コードのコンパイルには非常に時間がかかります。IL2CPP と Universal に切り替えるまでに 10 秒もかかりませんでした

Chartboost更新: アプリで、AdColony、およびを使用していることに言及する必要がありVungleます。いくつか実験を行ったところ、Xcode プロジェクトからリンカー フラグ-ObjC-fobjc-arcリンカー フラグを削除すると、Mach-O リンカー エラーが修正され、正常にビルドおよび実行できることがわかりました。私が得ていたwarning: directory not found for optionものはまだそこにありましたが、それでもコンパイルして正常に実行され、すべての機能がアプリで完全にChartboost機能していました。Vungle

AdColonySDK で必要なため、最初にこれらのリンカー フラグを用意しました。しかし、それらを削除すると、私のアプリで AdColony が機能しなくなりました。したがって、それはきれいな解決策でもありません。

これにより、AdColonyユニティ プラグインが Universal/ARM64 アーキテクチャのサポートに問題を抱えている可能性があるか、-ObjCリンカー フラグが Universal/ARM64 アーキテクチャへのビルドに対応していないかの 2 つが考えられます。

誰かがこの紛らわしい問題に光を当てることができれば幸いです。

ありがとう

4

3 に答える 3

3

プロジェクト内で参照されている複数の Vungle SDK がインポートされていると思います。あなたがしなければならないのは、それらの1つを削除することだけです. 一方が古く、もう一方が新しいと思われ、どちらがどちらであるかがわからない場合は、両方を削除してから、最新の Vungle SDK を再インポートしてください。

また、投稿されたログから別の可能性のある問題を見つけました

ld: warning: directory not found for option '-F"/Users/user/Desktop/qwer/../../Documents/Unity Projects/Unity 5.0.0 projects/MyGame/Assets/Editor/Vungle/VungleSDK"'

「FrameWork 検索パス」では、Vungle SDK へのパスが「」(逆コンマ) で囲まれているようです。以下の参照画像のように見えるはずのパスを確認してください。

パス$(SRCROOT)/../../Assets/Editor/Vungle/VungleSDKが "" (逆コンマ) で囲まれていないことに注意してください。

更新 1 これらの問題のほとんどは、フレームワークの検索パス内にパスが正しく入力されていない場合に発生します。私の場合、複数のプラグインがあり、フレームワークの検索パスだけでなく、ヘッダーの検索パスとライブラリの検索パスもチェックする必要がありました。また、ライブラリ検索パスに「」があり、それらも削除しました(「」を削除するときは注意してください-1つの間違った削除で、新しいxcodeプロジェクトを作成する必要があります)。他の検索パスの画像を添付しました

ヘッダー検索パス ここに画像の説明を入力

ライブラリ検索パス ここに画像の説明を入力

于 2015-07-05T16:17:43.440 に答える
0

SDKを.xmlにwarning: directory not found for optionすることで問題を解決できると思います。Search PathsRecursive

于 2015-07-08T08:10:57.600 に答える
0

Unity の経験はありませんが、アプリで奇妙なリンカー エラーが発生した場合は、実行しcleanて修正する必要があります。

于 2015-07-03T17:13:59.317 に答える