Seasons.NET

ちょっとした技術ブログです

Titaniumの自作モジュールをバンドルさせたくない時の対処法


Titaniumでモジュールを作成してプロジェクトで利用する場合、
最近ではプロジェクトフォルダにmodulesフォルダを配置してビルド
することが推奨されていました。
f:id:Seasons:20110713213118j:image


しかし、私にとってこれは問題のある結果をもたらしました。
できあがった .appファイルの中にmodulesフォルダ以下が
コピーされてバンドルされているのです。


これは、モジュールがアプリケーション実行時リンクで動作するため、
このような仕様になっているのですが、この .aのモジュールを
他のアプリにコピーすることで簡単に利用できてしまいます。
モジュールは、otoolで調べたところ静的リンクされているようでしたので、
モジュールそのものがバンドルされてしまうことが問題となります。


フリーなモジュールなら問題ないかもしれませんが、
有償のモジュールの場合にとても困ります。
ライブラリ内のメソッド名が分かってしまうと、
このライブラリを他のプロジェクトにコピーして自由に使えてしまうのです。


静的にリンクしてくれれば問題ないわけですが
これを解決するにためには、modulesの配置場所を
変更する必要があります。


以下の場所に作成したモジュールを移動してください。

/Library/Application Support/Titanium/modules

f:id:Seasons:20110713213116j:image

こちらに移動することでTitanium Studioなどで
ビルドした時に静的にリンクしてくれます。


バンドルがうっかりアプリ内にバンドルされてしまうと
違法コピーの可能性がでてしまうため、ビルドの際には気を付けましょう。