作業内容
Visual Studio から新しいプロジェクトを作る。プロジェクト テンプレートから JavaScript – Apache Cordova Apps を選ぶ
ソリューション エクスプローラーから config.xml をダブルクリックして開き、左ペインから Plugins を選ぶ。右ペインの Core から Cordova sqlite storage plugin を選び、インストールする
index.js に以下のように sqlite で DB を開く処理を加える。なおこの時インテリセンスは効かなかった。
function onDeviceReady() {
// Handle the Cordova pause and resume events
document.addEventListener( 'pause', onPause.bind( this ), false );
(略)// 以下の一行を追加する
var db = window.sqlitePlugin.openDatabase({ name: 'demo.db', location: 'default' });
};
環境に Windows-AnyCPU を選び、デバッグ実行する。次のエラーが出力された。
adding proxy for SQLitePlugin
OPEN database: demo.db
open db name: demo.db at full path: C:\Users\<username>\AppData\Local\Packages\io.cordova.myapp8e74f1_h35559jr9hy9m\LocalState\demo.db
OPEN database: demo.db FAILED, aborting any pending transactions
Could not open database
環境に Android を選び、実行環境に Ripple を選んで実行する。次のエラーが表示された。
SQLitePlugin.open
We seem to be missing some stuff 🙁
What is kinda cool though you can fill in the textarea to pass a json object to the callback you want to execute
環境は Android のまま、実行環境に VS Emulator または Google Android Emulator を選んで実行する。期待通りに実行された。
説明など
どういうことか。
- Cordova-sqlite-storage は Windows アプリケーションとして動作することをサポートしておらず、また動作しない
- Cordova-sqlite-storage は Java のネイティブコードを実行する。これは Ripple がサポートしておらず、また動作しない
ということ。
Cordova は Windows 上で手軽に実行を確認できてマルチプラットフォームでの開発ができることを期待して開発環境として選んだのだが、今のところエミュレータの動作が遅すぎて手軽にというわけにはいかなかった。
Windows 上でも動く、他の sqlite を使えるプラグインなりライブラリを探そうと思う。または Android の実機を用意するか、遅いエミュレーターで我慢する。