OSDN Ticket Archive


Ticket #32606

サンドボックス対応

登録: 2013-12-15 21:15 最終更新: 2014-01-04 00:51

報告者:
yknk
担当者:
yknk
チケットの種類:
機能リクエスト
状況:
完了
コンポーネント:
MIDITrail Ver.1.2.x for Mac OS X
マイルストーン:
Version 1.2.1 for Mac OS X (完了済み)
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
なし

詳細

サンドボックスに対応する。 2012年6月以降、Mac App Storeにアプリを登録するには、サンドボックス対応が必須となっているため。 なおMIDITrail Ver.1.2.0は、サンドボックス対応が必須になる前にMac App Storeへ登録した。(2012年2月)

チケットの履歴

2013-12-15 21:15 更新者: yknk
  • 新しいチケット "サンドボックス対応" が作成されました
2013-12-29 03:23 更新者: yknk
コメント

対策

Xcode4移行

Xcode3では標準でサンドボックスに対応できないため、Xcode4に移行する。 チケット「#32730 開発環境をXcode4に移行」で対応する。

証明書の登録

Mac Dev Centerにて下記の手続きを行う。

  • 開発用証明書の作成
    • Mac Developer
  • リリース用証明書の作成
    • 3rd Party Mac Developer Application
    • 3rd Party Mac Developer Installer
  • デバイスの登録
  • プロビジョニングプロファイルの作成

プロジェクト設定

Xcodeにてプロジェクトの設定でサンドボックスを有効にする。

  • PROJECT で MIDITrail を選択
    • Build Settings を選択
    • Code Signing Identity の Debug / Release の両方で Mac Developer: xxx (xxx) を選択
  • TARGETS で MIDITrail を選択
    • Build Settings を選択
    • Code Signing Identity の Debug / Release の両方でMac Developer: xxx (xxx) を選択
  • TARGETS で MIDITrail を選択
    • Summary を選択
    • Entitlements で Enable Entitlements をチェックONにする
    • Enable App Sandboxing が自動的にチェックONになる
    • User Selected File Access で Read Access を選択

MIDITrail.entitlements 編集

プロジェクトに追加された MIDITrail.entitlements を選択し、下記設定を追加する。 この設定により、MIDIサーバと Apple DLS Synth が利用できる。

com.apple.security.temporary-exception.mach-lookup.global-name
  com.apple.midiserver
  com.apple.midiserver.io
com.apple.security.temporary-exception.audio-unit-host  YES
参考ページ
http://lists.apple.com/archives/coreaudio-api/2011/Oct/msg00091.html
https://developer.apple.com/library/mac/qa/qa1483/_index.html

2013-12-29 03:26 更新者: yknk
コメント

Audio Unit とセキュリティ設定

課題

MIDITrail起動時に Apple DLS Synth を初期化する処理にて

MIDITrailApp::Initialize
  SMSequencer::Initialize
    SMOutDevCtrlEx::Initialize
      SMAppleDLSDevCtrl::_CreateAUGraph
        status = AUGraphOpen(auGraph);
を実行する時点で、次の警告メッセージが表示される。
要求された Audio Unit を使用するには、"MIDITrail"のセキュリティ設定を下げる必要があります。
続けてもよろしいですか?
[セキュリティ設定を下げる] [キャンセル]
キャンセルを選択すると、AUGraphOpenの戻り値が-3000 (invalidComponentID)となってしまう。 セキュリティ設定を下げるを一度選択すると、以降はアプリを再起動しても警告メッセージは表示されなくなる。 (ただしアプリをビルドし直すと、再びメッセージが表示される) ユーザがキャンセルを選択した場合、アプリの初期化処理が途中でエラーとなるため、アプリが処理を続行できない。

警告メッセージが表示される問題は、現時点では回避策がないようだ。

Is kAudioUnitSubType_DLSSynth compatible with the Mac OS X App sandbox
http://lists.apple.com/archives/coreaudio-api/2013/May/msg00025.html

対策

キャンセルへの対応

SMAppleDLSDevCtrl::_CreateAUGraph にて、AUGraphOpenが失敗した場合は、 その時点でエラーメッセージを表示して正常終了する。 以降、SMAppleDLSDevCtrlの公開メソッドが呼び出されたときは、何もせずに正常終了する。

メッセージ表示

MIDITrail初期化処理のSMSequencer::Initialize呼び出し前に、 OS X 10.7 (Lion) 以降の場合は下記メッセージを表示する。

MIDITrail uses Apple DLS audio device.
Therefore Mac may ask you to lower security settings to use it.
次回起動時はメッセージを表示しない。 ただしMIDITrailのバージョンが変わったときは、再び1度だけメッセージを表示する。 この表示制御を実現するため、メッセージ表示メソッド MIDITrailApp::_DispSandboxInfo を新規追加する。

  • MIDITrailApp::_DispSandboxInfo
    • メッセージを表示する。
    • ユーザデフォルトの Etc/Sandbox/PreviousVersion に、MIDITrailのバージョンを記録する。
    • 次回起動時に、MIDITrailのバージョンと Etc/Sandbox/PreviousVersion の値が一致する場合は、メッセージの表示をスキップする。
2014-01-03 17:17 更新者: yknk
コメント

Distribution プロファイル作成

(1) App ID 設定

サンドボックスに対応するため、iCloudを有効にする必要がある。 下記の手順で有効にする。この作業は、Distributionプロファイル作成前に実施しておく必要がある。

Mac Dev Center
Certificates, Identifiers & Profiles
Identifiers / App IDs
jp.sourceforge.users.yknk.MIDITrail を選択
Edit ボタンをクリック
iCloud をチェックして保存

(2) Distribution プロファイル作成

下記の手順で作成する。

Mac Dev Center
Certificates, Identifiers & Profiles
Provisioning Profiles / Distribution
+ボタン
Distribution / Mac App Store を選択
App ID: MIDITrail を選択
Certificates: Masashi Wada (Mac App Distribution) を選択
Profile Name: MIDITrail distribution を入力
MIDITrail_distribution.provisionprofile をダウンロード

(3) Distribution プロファイル登録

Organizerにプロファイルを登録する。 LIBRARY / Provisioning Profiles の右ペインにダウンロードしたファイルをドロップする。

2014-01-03 17:25 更新者: yknk
コメント

証明書の設定

Mac App Store 登録時は、Code Signing Identity の設定は

Mac Developer: xxx (xxx)
ではなく、
3rd Party Mac Developer Application: xxx (xxx)
を選択する必要があった。 事前に Organizer へ Distribution プロファイルを登録しておく必要がある。

2014-01-03 23:58 更新者: yknk
コメント

SourceForge登録版の対応

SourceForgeに登録する場合は、サンドボックスは無効とする。 プロジェクト設定の変更点は次の通り。

  • Code Signing Identity -> Don't Code Sign
  • TARGETS / Summary
    • Signature / Code Sign Application -> OFF
    • Entitlements / Enable Entitlements -> OFF(App Sandbox も同時に無効になる)
2014-01-04 00:51 更新者: yknk
  • 解決法なし から 修正済み に更新されました
  • 状況オープン から 完了 に更新されました
  • チケット完了時刻2014-01-04 00:51 に更新されました

添付ファイルリスト

添付ファイルはありません