Sencha Touch 2.1 でアプリケーションを作成しました。そのパッケージ ビルドを Cordova/PhoneGap 2.5.0 に組み込み、xCode でコンパイルして iOS シミュレーター/iOS で実行します。私はPGSQLiteプラグインを PhoneGap に追加し、Sencha 用の独自の PhoneGap/SQLite Proxy を構築しました。これをいくつかのストアで使用しました。*
問題:パッケージ ビルドを PhoneGap に埋め込んで iOS シミュレーターで実行すると、Sencha が初期化する前に Cordova がロードされないことがわかります。これが表示されるのは、Sencha アプリで Proxy の初期化で呼び出しを行うと、オブジェクトが見つからないCordova.exec
というエラーが発生するためです。Cordova
Cordova.exec
後でアプリケーションで使用して、PhoneGap の Childbrowser プラグインなどを実行することに成功しましたが、動作します。しかしCordova.exec
、アプリの実行の早い段階、つまり初期化で使用するのは、Cordova オブジェクトがインスタンス化されることを保証するには時期尚早です。
すでに試しました:私はすでに次のアプローチを試しました:
Sencha アプリのデベロッパー ビルドを PhoneGap に単純に埋め込んでみました。これは機能しましたが、開発ビルドをリリース済みのアプリとして展開したくありません。非効率的で多くのスペースを占有するためです。しかし、私はこの実験から、Sencha Touch マイクロローダがパッケージと製品ビルドで動作する方法は、Sencha の後に PhoneGap をロードすることを学びました。これは、Sencha がパッケージビルドでロードされた後に DOM を調べるとはっきりとわかります。
app.json
以前に、PhoneGap とプラグイン、app.js
および Sencha Touch フレームワークを含めるようにファイルを構成しました。私のJSファイル参照の順序をいじってapp.json
も、ロード順序に影響はないようです。こちら (StackOverflow)で説明されているように、スクリプト ローダーの作成も試みました。次に、Cordova のスクリプト ローダーを実行し、そのコールバックでプラグインのスクリプト ローダーを実行し、最後にそのコールバックで Sencha Touch マイクロローダーを実行しました。これにより、エラーが発生しました。
index.html
さらに、 Sencha がパッケージをビルドした後、手動でファイルに設定する必要がありました。これは容認できないようです。
私が探しているもの:私は次の答えを探しています:
Sencha の microloader または私の Sencha アプリ全般を設定して、Sencha の microloader が実行される前に Cordova が確実に読み込まれるようにする方法はありますか?
これを設定して Sencha Cmd を引き続き使用できるようにする方法はありますか? また、アプリをビルドした後に index.html ファイルをいじる必要はありませんか?
注: *Sencha 用の既存のいわゆる SQLite Proxy を使用することを提案しないでください。Sencha Touch 2 の SQLite プロキシ (つまり、 this ) に関する既存の作業は高く評価していますが、実際には iOS 上の SQLite にネイティブに保存されない WebSQL プロキシであるため、私は特に自分のアプローチを選択しました。私のプロキシは、PhoneGap 用の PGSQLite プラグインを使用して、iOS 上の SQLite にデータをネイティブに保存します。クリーンアップしてコードから解きほぐす機会があれば、オープンソース化する予定です。