本文書はAlloy Debugging and Troubleshootingの日本語訳です。
- 概要
- デバッグ
- トラブルシューティング
- [ERROR] No app.js found. Ensure the app.js file exists in your project's Resources directory.
- Android: Images, HTML pages and other assets do not display
- Android Runtime Error: Uncaught TypeError: Cannot call method xxx of undefined
- Android Runtime Error: Uncaught ReferenceError: Alloy is not defined
- iOS Application Error: invalid method (xxx) passed to UIModule (unknown file).
- iOS Application Error: undefined is not an object (evaluating $.xxx.open) (unknown file).
- Mobile Web: Changes to code do not take effect
- Mobile Web: [ERROR] alloy run not supported by mobileweb
- Studio: Unable to find alloy binary
- 助けを求める
- バグレポートを送る
本ガイドでは Alloy アプリケーションのデバッグとトラブルシューティングについて取り扱います。
Alloy アプリケーションのデバッグには Studio Debugger が使えます。Studio Debugger を使うことで、コードの中にブレイクポイントを設定して、ある特定の行を実行する直前でアプリケーションを一時停止し、変数やその値を調べることができます。Titanium Studio でデバッガーを使うためのより詳細な情報についてはDebugging in Studioを参照してください。
Alloy Controller や alloy.js でブレイクポイントを追加・削除するには、左側の行番号の左の空間をダブルクリックしてください。ブレイクポイントを設定すると、青いドットが表示されます。これらのブレイクポイントは、Resources ディレクトリに生成される Titanium ファイルのコードにひも付きます。
app ディレクトリにある CommonJS や Alloy のモデルファイルに設定されたブレイクポイントは、デバッグ時に無視されます。これらの要素にブレイクポイントを設定するには、Alloy CLI で生成された Titanium のファイルにブレイクポイントを設定する必要があります。CommonJS のモジュールは Resources ディレクトリにコピーされ、 Alloy Model の生成されたファイルは Resources/alloy/models ディレクトリに配置されます。
App Explorer ビューで Resources フォルダが隠れている場合は、 View Menu ボタン(白い下向きの三角形)をクリックして、 Customize Views を選択して ... Available Customization ダイアログを表示してください。 Filters タブで Titanium Resources Folder のチェックボックスを外し、 OK ボタンをクリックしてください。 App Exploer ビューで Resources フォルダが表示されるはずです。
Resources ディレクトリ内のファイルに対して設定されたブレイクポイントは、app ディレクトリ内のファイルを編集した場合、削除されたり、適切な行に紐付かなくなる場合があります。コードをコンパイルした後に、 Resources ディレクトリ内のファイルに設定したブレイクポイントがそのまま設定されていて、正しい場所(行番号)にあることを確認して下さい。正しく設定されていなかった場合は、ブレイクポイントを再設定して、デバッグモードでプロジェクトに戻ってください。
App Explorer ビューで Application をデバッグする準備が整ったら、 Debug ボタン(フォルダに緑の虫がついたボタン)をクリックしてデバッガを起動し、プラットフォームを選択してください。コードのコンパイルが開始される前に、 Perspective の切替の確認画面が表示されるので、 Yes をクリックしてください。
Debug Perspective では、コードに対してステップイン、停止、再開するための Debug ビューを利用することができます。code の実行が停止されている間、 Variables ビューで現在の変数とその値を見ることができます。
Alloy Release 1.1.0, Studio 3.1.0 以前のバージョンでは、ブレイクポイントを Controller のコード (app/controllers) に作成すると、ブレイクポイントが無視されます。代わりに Resources/alloy/controllers ディレクトリにある、生成された Titanium のコードに対してブレイクポイントを設定してください。
Alloy のコンパイラは JavaScript, JSON, TSS, XML ファイルの syntax error に対してエラーメッセージを生成します。エラーメッセージには、エラーの発生したファイルと行、文字の場所と、説明が含まれます。
Titanium Stadio では、これらのエラーメッセージが Console ビューに出力されます。
Resources フォルダの一部コンテンツが削除されている場合は、 alloy compile --config platform=<platform>
を実行してファイルを再生成してください。
iOS や Mobile Web アプリケーションで asset が表示されていて、 Android では表示されていない場合は、 asset へのパスがスラッシュ ('/') で始まるようにする必要があります。iOS, Mobile Web プラットフォームは相対パスと絶対パスをサポートしていますが、Android プラットフォームは絶対パスしかサポートしていません。
- iOS 専用の Titanium オブジェクトを作成しようとしているのかもしれません。View で platform 属性を利用して、platform 特有のオブジェクトを使ってください。
- View の top-level UI コンポーネントに ID が割り当てられている場合、つまり、XML のそのコンポーネントの ID 属性が設定されている場合、Controller はそのオブジェクトに参照するのに
$.<controller_name>
を利用することができません。割り当てた ID を利用してください。
Controller でない JavaScript のファイルは Alloy が自動読み込みされません。'alloy' モジュールを require する必要があります。詳細は Library Code を参照してください。
Android 専用の Titanium オブジェクトを作成しようとしているのかもしれません。View の中で platform 属性を利用して、platform 特有のオブジェクトを使ってください。
View の top-level UI コンポーネントに ID が割り当てられている場合、つまり、XML のそのコンポーネントの ID 属性が設定されている場合、Controller はそのオブジェクトに参照するのに $.<controller_name>
を利用することができません。割り当てた ID を利用してください。
Mobile Web はコンパイラプラグインをサポートしていないので、Mobile Web アプリケーションは Titanium Stadio でビルドすることができません。Alloy を使って Mobile Web アプリケーションをビルドする場合は、 Alloy の CLI でコードをコンパイルする必要があります。
$ alloy compile --config platform=mobileweb
Mobile Web アプリケーションは CLI で実行できません。Titanium Stadio でプログラムを実行してください。
おそらく Titanium Stadio への Alloy のインストールで問題が発生しているか、 alloy のバイナリに PATH が通っていません。Alloy がインストールされていて、 PATH (通常 '/usr/local/bin' にインストールされます) に存在することを確認して下さい。きちんとインストールされていない場合は、 Manual Installation instructions の指示にしたがってインストールしてください。
Titanium コミュニティのメンバーの支援を求めたり、過去に回答された質問から答えを探すには、 Titanium Community Questions and Answers Forum を利用してください。質問をする際は、タグに 'alloy' を入力し、プラットフォーム情報に Alloy のバージョンを入れてください。Alloy のバージョンはコンソールで alloy --version
を実行すれば確認できます。
詳細は Using Questions and Answers と Getting Help を参照してください。
既存の課題を探したり、バグレポートを送る場合は JIRA を利用してください。Titanium (Community) プロジェクトで、コンポーネントとして 'Alloy' を選択し、 environment 情報に Alloy のバージョンを入力して JIRA のチケットを作成してください。Alloy のバージョンはコンソールで alloy --version
を実行すれば確認できます。
詳細は How to Submit a Bug Report を参照してください。