11

シェルからメインのココアアプリを起動する、私が作成したシンプルなUNIXツールがあります。

サンドボックス化する必要がありますが、実行すると、console.appで「Illegalinstruction:4」というエラーでクラッシュし、次のエラーメッセージが表示されます。

サンドボックスの作成に失敗しました:コンテナオブジェクトの初期化に失敗しました:visdiffのエラーの説明がないNILコンテナ情報オブジェクト

ファイルはcodesignで正しく署名されています。

ポストMacOSアプリ、コマンドラインツール付きサンドボックスを読みましたか?しかし、それは役に立ちません

4

4 に答える 4

9

私はこの正確な問題を抱えていましたが、埋め込まれたInfo.plistを追加すると問題は解決しました。

これらのclangフラグを試してください(info.plistビルドディレクトリにあると仮定します)。

-Xlinker -sectcreate -Xlinker __TEXT -Xlinker __info_plist -Xlinker info.plist

于 2013-05-03T16:12:21.657 に答える
4

コンソールアプリケーションはコンソールから直接起動されますか、それともメインのサンドボックスアプリケーションから呼び出されますか?一部のバイナリをサンドボックス化しようとしたときに同様のエラーが発生しましたが、以下の資格のみを使用して機能させることができました。

<dict>                                                                                                                                                                       
  <key>com.apple.security.app-sandbox</key>                                                                                                                                  
  <true/>                                                                                                                                                                    
  <key>com.apple.security.inherit</key>                                                                                                                                      
  <true/>                                                                                                                                                                    
</dict> 

もちろん、その後は、すでにサンドボックス化されている親プロセスからのみバイナリを呼び出すことができます(そのため、バイナリの呼び出し方法を尋ねました:))。

于 2012-10-19T17:00:05.660 に答える
1

@Nick Mooreの答えは完全に問題ありませんが、今日のXcodeのPackaging-Create Info.plist Section in Binary(CREATE_INFOPLIST_SECTION_IN_BINARY)にこのオプションがあります。必要なのは、thueをYesに設定することだけです。

于 2018-11-09T15:38:11.440 に答える
0

com.apple.security.inheritを使用して実行可能ファイルに署名すると、すでにサンドボックス化されている別のアプリケーションからのみ呼び出すことができるようです。したがって、codesignを実行した後は、cmdlineから呼び出すことはできなくなります。

于 2014-07-31T05:27:27.647 に答える