Xcode 6 を使用して iOS シミュレーターでアプリを起動しようとすると、エラー (ドメイン = LaunchServicesError、コード = 0) が発生しました。Google で解決策を探しましたが、実用的なものは見つかりませんでした。
このエラーはどういう意味ですか?
Xcode 6 を使用して iOS シミュレーターでアプリを起動しようとすると、エラー (ドメイン = LaunchServicesError、コード = 0) が発生しました。Google で解決策を探しましたが、実用的なものは見つかりませんでした。
このエラーはどういう意味ですか?
このエラーは、インストールに問題があったことを示しています。残念ながら、Xcode は実際にはエラー メッセージの内容を出力して詳細を把握することはできませんが、~/Library/Logs/CoreSimulator/CoreSimulator.log を参照して残りのエラーの詳細を確認できます。シミュレートされたデバイスのシステム ログ (~/Library/Logs/CoreSimulator/[Device UDID]/system.log) にも、問題に関する詳細情報が記録されます。エラーが発生した前後の installd からのメッセージを探します)。
この一般的な原因には、バンドルに Info.plist がない、バンドルの Info.plist 内にキーがない、または Info.plist 内の一部のキーの値が許可されていないことが含まれます。
アプリの Info.plist に有効な CFBundleVersion キーと値のペアが含まれていない場合、アプリが最初は正しくインストールされても、更新に失敗する可能性があります。多くのユーザーは、インストールのたびに「コンテンツと設定のリセット」を実行することでこの問題を回避しているようですが、Info.plist で適切な CFBundleVersion を設定して根本原因を修正することをお勧めします。この場合、iOS 8.2 は更新時だけでなく最初のインストール時にエラーを正しく返すようになったと思います。そのため、この問題がより明確になることを願っています。
ハード リンクをサポートしないファイル システム (例: AFP、SMB、または一部の NFS サーバー経由のネットワーク ホーム ディレクトリ) にホーム ディレクトリを持つユーザーも、ハード リンクに関連する問題に遭遇する可能性があります。この場合、シミュレーター開発用のローカル HFS+ ファイルシステム (例: /var/simulator/[user]) にパスを作成し、~/Library/Developer/CoreSimulator からそのパスへのシンボリック リンクを作成することをお勧めします。この特定の問題は、iOS 8.2 ベータ版の 1 つで修正されました。
別のケースでは、Build&Run は常に最初の試行で成功しますが、変更された Info.plist が原因で後続の試行が失敗することがあります (例: 誰かのビルド システム設定により、反復ごとに CFBundleVersion が異なるため)。通常は、インストールされているアプリを削除するか (ホーム画面から長押しするか、または を使用xcrun simctl uninstall [Device UDID] [app identifier]
)、デバイスを消去してデフォルトの状態に戻すことで回復できます。デバイスを消去するにはxcrun simctl erase [Device UDID]
、ターミナルから実行するかErase Contents & Settings
、iOS シミュレーター メニューから選択します。この特定の問題は、iOS 8.2 ベータ版の 1 つで修正されました。
この問題の新しいインスタンスは、Xcode 6.2 ユーザーで発生しています。アプリに WatchKit アプリ拡張機能がバンドルされている場合、iOS 8.2 より古いバージョンの iOS シミュレーター ランタイムへのインストールは失敗します。回避策として、iOS 8.1 以前のランタイムでテストする場合は、アプリ拡張機能のインストールを手動で無効にする必要があります。
より具体的なサポートが必要な場合は、CoreSimulator.log からのエラー メッセージ全体と、ほぼ同時に ~/Library/Logs/CoreSimulator/[Device UDID]/system.log に表示される installd および CoreSimulatorBridge からのメッセージをすべて提供してください。それは根本的な問題を明らかにします。
プロジェクトにウィジェットまたは拡張機能が含まれていますか? その場合、問題はウィジェット/拡張機能のバンドル識別子である可能性があります。メインターゲットと同じで、ピリオドと追加の文字列が追加されている必要があります。たとえば、次のようになります。
主な対象:com.mycompany.myapp
ウィジェットは次のようにする必要があります。com.mycompany.myapp.widget
誰もが経験したことと、正確な問題をどのように解決したかを書いているので、それは役に立たないかもしれません.
問題は、同じエラー メッセージに対してさまざまな原因があり、それを解決する正しい方法は、開いて~/Library/Logs/CoreSimulator/CoreSimulator.log
最後のメッセージを探すことです。このメッセージは、適切な手がかりを提供し、問題を解決するための正しい道筋を示します (バンドル ID である場合もあれば、Info.plist の欠落または余分な属性である場合もありますが、常に適切で説明的な手がかりが得られます)。
これが、問題を絞り込み、最終的に修正する方法です。
Xcode で頑張ってください。)
Z.
私にとっては、プロジェクトをクリーンアップしたところ、機能しました->製品->クリーン
TLDR: プロジェクト ビルド フォルダーをクリアすると、この問題から解放されます。
(さらに、Xcodeでこれを修正する方法を見つける必要があるため、これをAppleのバグとして記録しました)
これらの解決策はどれもうまくいきませんでした-いくつかの壁に頭をぶつけました。
CoreSimulator のログを確認したところ、削除したライブラリをビルドしようとしていることがわかりました。どこにもそれへの参照が見つかりませんでした。
次に、別の SO Question を介して見ましたが、残念ながら参照することができません。
Clean
Build Folder
iOS シミュレーターのメニュー オプションから「コンテンツと設定をリセット」し、終了後にシミュレーターを起動すると、問題が解決しました。
私の場合、ビルドIDを設定しなかったためにエラーが発生しました。
これを設定すると、問題なくエミュレーターが起動します。
コンソール アプリを開き、そこを確認します。私の場合、何をすべきかを正確に教えてくれました。私が見た:
ErrorDescription=WatchKit 2 アプリ拡張機能の NSExtension.NSExtensionAttributes.WKAppBundleIdentifier 値が WatchKit アプリのバンドル ID と一致しません ("com.myCompany.MyApp.MyApp.watchkitapp" が見つかり、"com.myCompany.MyApp.watchkitapp" が必要です)。
そこで、各 plist に移動し、BundleID に関連する項目を確認しました。次に、クリーンアップ、再起動などを行います。
ビルド構成に基づいて異なるバンドル ID を使用するように設定されたアプリがあります。Apple Watch 拡張機能を作成するとき、Xcode はリリース ID を使用してすべてを生成したため、デバッグのためにすべて手動で変更する必要がありました。ここに私がそれを変更しなければならなかったすべての場所があります:
WatchKit Extension
のBuild Settings -> Packaging -> Product Bundle Identifier
WatchKit Extension
のInfo.plist -> NSExtension -> NSExtensionAttributes -> WKAppBundleIdentifier
(これは、コンパニオン アプリと同じプレフィックスを使用する必要があります)WatchKit App
のInfo.plist -> WKCompanionAppBundleIdentifier
最後のWatchKit App
設定では、ターゲット設定を表示するときに の情報がタブとして表示されないため、しばらく時間がかかりましたInfo.plist
。ファイル自体に直接移動する必要がありました。
シミュレーターをリセットしてクリーンビルドを実行しても問題が解決しなかった後、私にとってはうまくいったもう1つのことは、派生データをクリアすることです。これを行うには: オーガナイザーに移動し、プロジェクトをクリックして、[派生データの削除] ボタンをクリックします。しばらく拡張に取り組んだ後、これが発生し、通常のブランチに戻りました。お役に立てれば。
Jeremy による優れた説明により、少なくとも正しい方向に進むことができましたが、すべてのバンドル識別子とバージョンが正しく設定されているにもかかわらず、エラーは解決しませんでした。次に、WatchKit 拡張機能 (バンドル リソースのコピー フェーズ) が WatchKit アプリをコピーすることを示すApple のドキュメントを確認しました。この WatchKit アプリは私の iOS アプリとまったく同じ名前が付けられていたため、Xcode はこの 2 つを混同し、バンドル ID が間違っていると考えて間違った plist を読み込んでしまいました。WatchKitアプリの製品の名前を別のものに変更すると、最終的に解決されました。
[TARGETS]-[General]-[Identity]-[Version(or Build)] が空の場合は、数値を入力してみてください。
それは私のために働いた。
お役に立てば幸いです。
上記のどれも私にとってはうまくいきませんでしたが、これはうまくいきました:
IceCream.xcworkspace/xcuserdata/xcuserdatad を削除してから、シミュレーターをリセットしてアプリを再度実行しました。(シミュレータだけをリセットしてもうまくいきませんでした。)
バンドル ID を変更した場合は、再度ビルドする前にクリーン ビルドを行ってください。ここで方法を参照してください:キャッシュを空にしてすべてのターゲットを消去する方法 Xcode 4
したがって、それは間違いなく.plistの問題です。私の場合は空NSExtensionMainStoryboard
で、このプロパティを削除すると問題が解決しました
Apple の Lister Xcode プロジェクトをビルドしてシミュレーターで実行しようとしたときに、このエラーが発生しました。
私のためにそれを修正した必需品は次のとおりです。
1) iOS アプリと iOS 拡張機能の BundleID は異なる必要がありました 2) 両方のターゲットに iCloud とアプリ グループを提供しました 3) Xcode の「問題の修正」を使用して問題を修正しました
その後、警告やエラーなしでアプリをビルドして実行できました。
ログ ファイルからの手がかりは、"... LegacyErrorString=DuplicateIdentifier, FunctionName=-[MIInstallableBundle performPreflightWithError:], SourceFileLine=450, NSLocalizedDescription=The parent bundle has the same identifier (com.ACMECompany.Lister) as sub-bundle at / Users/stephen/Library/Developer/CoreSimulator/Devices/5329928B-946B-40A4-B666-EFD11B96D11F/data/Library/Caches/com.apple.mobile.installd.staging/temp.HQ5d9X/extracted/Lister.app/PlugIns/ Lister.appex"
私もこの問題を抱えていました.info.plistの1つが、特に割り当てられていないはずのターゲットに割り当てられていたことがわかりました。実際には Xcode 設定の推奨警告があり、それをタップして変更を受け入れました。これで問題は解決しました。
これは私にとってはうまくいきました: プロジェクト設定 -> 一般タブ -> ID セクションで、バージョン番号を 2.0.2 (3 桁) から 2.0 (2 桁) に変更してから、シミュレーターでアプリを削除し、プロジェクトを再度実行します。 . その後エラーはなくなりました。
そこにあるはずのない時計アプリの.plist ファイルのキーを削除しました。そして、問題は消えました。
私の問題は、ターゲット プロジェクトのラッパー拡張機能が設定されていなかったことです。
修正するには、target project -> build settings -> Packaging -> Wrapper Extensionに移動する必要がありました。
これを「アプリ」に設定します(引用符なし)
これで問題は解決しました
ログに以下がありました...
<Error>: Error Domain=LaunchServicesError Code=0 "(null)" UserInfo={Error=ExecutableTwiddleFailed...
これは、拡張プロジェクトにソース ファイルが追加されていないことが原因でした。