アプリケーションを配布する
実際に作成したOFのアプリケーションを配布する場合,Releaseでビルドした後、binフォルダにできた実行ファイルをコピーすればよいのですが,dataフォルダに読み込みデータがある場合は実行ファイルのコピーだけでなく,実行ファイルと同じ階層にdataフォルダもおいておく必要がでてきます.例えばsampleというプロジェクトで,binフォルダに作成された sample(.app)をデスクトップにコピーし,ダブルクリックで実行すればアプリケーション自体は動作しますが, 読み込むべきフォントや画像などがある場合はそれが読み込まれないことが起こります.
以上を解決するには下記リンクが参考になりました。
ポイントとしては
Run Scriptに追加:cp -r bin/data "$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources"; * For OF < 0.8 call ofSetDataPathRoot(“../Resources/”); in setup(), ofApp.cpp. * and for OF >= 0.8 call ofSetDataPathRoot("../Resources/data/"); in setup(), ofApp.cpp
が必要になります.
Run Scriptに追記後,Catalina, oF0.11環境にてエラーがでることがありますが,Run Scriptの変更分を削除するか,
を参照することで解決しました.
ファイルが壊れています
他の人に渡したときに「ファイルが壊れています」表示が出る場合の対処方法としては
- 受け取り側のセキュリティ設定を下げる
- 送りてのアプリケーションを再確認する
の2パターンがあります。前者はPCに明るい人向けですが、macのセキュリティを下げることが必要なのであまり好ましくないです。後者に関しては様々な理由で発生します。馬場の場合で一つ明確にこの状況が生じる原因を見つけたので忘備録として記述します。
例えば以下のファイル構成はアノテーション用配布アプリなんですが、一旦このアプリケーションを生成したあとで、ファイル構成を変更すると例の「ファイルが壊れています」現象が生じます。というのも、_CodeSignature/CodeResources はxml形式ファイルになっているのですが、ここで、ファイルを生成したときの Resourcesファイル構成一覧が保存されています。この構成と一覧が異なるとどうやら「ファイルが壊れています」になってしまうようです。このアプリのときは開発するときにdnnに複数のdnnモデルファイルを使っており、配布するときだけ、容量を小さくするために使っていないモデルファイルの削除を行ったあと学生に渡していました。以後は開発の際はresourceフォルダとは別の場所にこれらのファイルをおいておけばよいのだとわかりました。
. └── Contents ├── Frameworks │ └── libfmod.dylib ├── Info.plist ├── MacOS │ └── annotation ├── PkgInfo ├── Resources │ ├── data │ │ ├── dnn │ │ │ ├── classlist.txt │ │ │ ├── yolo.cfg │ │ │ └── yolo.weights │ │ ├── font │ │ │ └── DIN\ Alternate\ Bold.ttf │ │ ├── gui_settings │ │ ├── icon.icns │ │ ├── result_recognition.png │ │ └── saved_images │ │ └── annotation_braille_block.png │ └── icon.icns └── _CodeSignature └── CodeResources