コマンドラインツールのサンドボックス化
2222 ワード
はじめに
Xcodeで自作したコマンドラインツールをサンドボックス化する方法についてのメモ記事です。
すること
- Info.plistファイルを準備してプロジェクトに読み込む(他のプロジェクトで作成されたファイルを読み込んで編集すると楽)。
- TargetのGeneralタブのIdentityのchoose Info.plist File..で(1)のファイルを選ぶ。
- CapabilitiesでApp Sandboxを追加。適宜設定を変更。
- TargetのBuidSettingsのPackagingでCreate Info.plist Section in BinaryをYESに変更。
これでビルドする。
サンドボックスの設定を確認
codesign -d --entitlements :-
/Users/yoho/Library/Developer/Xcode/DerivedData/commandLineToolTest-fiajznkvauagbcaqcvfqjyprqven/Build/Products/Release/commandLineToolTest
実行結果:
Executable=/Users/yoho/Library/Developer/Xcode/DerivedData/commandLineToolTest-fiajznkvauagbcaqcvfqjyprqven/Build/Products/Release/commandLineToolTest
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
<key>com.apple.security.get-task-allow</key>
<true/>
</dict>
</plist>
関連するエラー
Info.plist Section in BinaryをYESにしないと、ビルド自体は成功するが、Xcodeで以下のエラーが出てデバッグなどができない。
Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
この時作成されたバイナリをターミナルで実行すると、
Illegal instruction: 4
と出力される。
おわりに
App Storeで色々公開しようと思って準備しているが、Sandbox化で手こずっている。なかなか関連する情報が得られず、記事にしておくことにした。
Author And Source
この問題について(コマンドラインツールのサンドボックス化), 我々は、より多くの情報をここで見つけました https://qiita.com/yoho/items/4e6c7aaf715ad7b1808e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .