3

新しくリリースされた Xcode 5 に更新しました。Google Maps iOS SDK を使用する開発中の iOS アプリがあります。Xcode 4 で開発していたとき、プロジェクトに SDK を追加するためArchitecturesの Google の手順 7 に従って、プロジェクト設定の設定を変更しました。

7. 特定のターゲットではなくプロジェクトを選択し、[ビルド設定] タブを開きます。Architectures のデフォルト値を armv7 に置き換えます。[その他のリンカー フラグ] セクションで、-ObjC を追加します。これらの設定が表示されない場合は、[ビルド設定] バーのフィルターを [基本] から [すべて] に変更します。

Xcode 4 ではすべて問題ありませんでしたが、Xcode 5 でプロジェクトを開くと、課題ナビゲーターに次の警告が表示されます。

プロジェクト設定の検証

推奨設定への更新

警告をクリックすると、Xcode によってプロジェクト設定が表示され、[キャンセル] ボタンと [変更を実行] ボタンを含むポップアップが表示され、加えたい変更の次の説明が表示されます。

Project 'Your Project' - 自動的にアーキテクチャを選択

Project 'Your Project' は Architectures 設定をオーバーライドします。これにより、設定が削除され、アクティブなプラットフォームと展開ターゲットで利用可能なハードウェアに基づいて、Xcode がアーキテクチャを自動的に選択できるようになります。

[変更を実行] をクリックして、Xcode にやりたいことを何でもさせてみましたが、アプリはまだシミュレーター用にうまくビルドされていました。ただし、iPhone 5 (ARMv7S をサポート) を接続して実行しようとすると、次のリンカー エラーでアプリのビルドに失敗しました。

Ld /Users/macmini/Library/Developer/Xcode/DerivedData/Your_App-bmrouudjlblpafdjzhpwcuekzgwu/Build/Products/Debug-iphoneos/Your\ App.app/Your\ App normal armv7s
    cd "/Users/macmini/Documents/Your App"
    setenv IPHONEOS_DEPLOYMENT_TARGET 6.1
    setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7s -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -L/Users/macmini/Library/Developer/Xcode/DerivedData/Your_App-bmrouudjlblpafdjzhpwcuekzgwu/Build/Products/Debug-iphoneos -F/Users/macmini/Library/Developer/Xcode/DerivedData/Your_App-bmrouudjlblpafdjzhpwcuekzgwu/Build/Products/Debug-iphoneos -F/Users/macmini/Documents/Your\ App -filelist /Users/macmini/Library/Developer/Xcode/DerivedData/Your_App-bmrouudjlblpafdjzhpwcuekzgwu/Build/Intermediates/Your\ App.build/Debug-iphoneos/Your\ App.build/Objects-normal/armv7s/Your\ App.LinkFileList -dead_strip -ObjC -fobjc-arc -fobjc-link-runtime -miphoneos-version-min=6.1 -framework SystemConfiguration -framework MapKit -framework QuartzCore -framework OpenGLES -lz -licucore -lc++ -framework ImageIO -framework GLKit -framework CoreText -framework CoreLocation -framework AVFoundation -framework CoreData -framework UIKit -framework Foundation -framework CoreGraphics -framework GoogleMaps -Xlinker -dependency_info -Xlinker /Users/macmini/Library/Developer/Xcode/DerivedData/Your_App-bmrouudjlblpafdjzhpwcuekzgwu/Build/Intermediates/Your\ App.build/Debug-iphoneos/Your\ App.build/Objects-normal/armv7s/Your\ App_dependency_info.dat -o /Users/macmini/Library/Developer/Xcode/DerivedData/Your_App-bmrouudjlblpafdjzhpwcuekzgwu/Build/Products/Debug-iphoneos/Your\ App.app/Your\ App

ld: file is universal (2 slices) but does not contain a(n) armv7s slice: /Users/macmini/Documents/Your App/GoogleMaps.framework/GoogleMaps file '/Users/macmini/Documents/Your App/GoogleMaps.framework/GoogleMaps' for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Xcode が行った自動変更を元に戻すと、アプリは再び iPhone 5 用に正常にコンパイルされましたが、もちろん警告が返されました。

iPhone 5 でアプリを正常にビルドできるようにしながら、Xcode を満足させ、警告を取り除くにはどうすればよいですか?

4

3 に答える 3

11

おっと-たまたま、この質問を投稿した後、自分で答えを見つけるのに数秒しかかかりませんでした。

  1. 課題ナビゲーターで [プロジェクト設定の検証] 警告をクリックします。
  2. 「アーキテクチャを自動的に選択する」提案された変更の左側にあるチェックボックスをオフにします。
  3. [完了] をクリックします (または、実際に行いたい変更がリストに残っている場合は [変更を実行] をクリックします。私の場合は、これが 1 つだけでした)。

これで、設定は以前と同じになり、iPhone 5 用にビルドできますが、警告はなくなりました。

この質問を投稿するのに時間を費やしたので、今は少しぼんやりしていますが、将来誰かに役立つ場合に備えて、質問とこの回答をここに残します.

于 2013-09-19T15:47:53.553 に答える
3

Google Maps SDK v1.5 が ARMv7S をサポートするようになりました。v1.5リリース ノートから:

Google Maps SDK for iOS に armv7s スライスが同梱されるようになりました。(問題 4745)

アプリで ARMv7S をサポートするとパフォーマンスが向上するため、質問に記載されている警告が表示された場合の最善の対応策は、Google Maps SDK のバージョンを v1.5 (またはそれ以降) に更新することです。今後)、警告をダブルクリックして、Xcode がアーキテクチャ設定をデフォルトに戻すことを許可します。

于 2013-09-22T23:15:21.457 に答える