Visual Studio 2015 + cordova で SQLite を使いたい part 2

前回の調査により、以下のことがわかった。

  • Cordova-sqlite-storage は Windows アプリケーション上では動かない
  • Cordova-sqlite-storage は Ripple エミュレーター上では動かず、その他のエミュレーターは重過ぎる

そこで Cordova-sqlite-storage をあきらめて、他のプラグインなどを使うことを考えた。まず思い当たるのは WebSQL であるが、これも Windows アプリケーションとしては動かない。いろいろと探したが適当なものがみつからなかったのだが、Cordova-sqlite-storage の readme を見てみると UWP (Windows 10) をサポートしているとのことであった。

Windows 10 の UWP をサポートしているのならば、デスクトップ アプリケーションとしてデバッグできるだろうと期待して調べてみることにした。

前回の投稿で作ったプロジェクトを開き、まずプラットフォームを変えてみようと思ったが、Windows Phone (Universal) しかない。これでビルドしてみたが Windows 8.1 の UWP になってしまう。以下の 3 つのドキュメントのやり方で Windows 10 UWP にビルドできるとのことなのでやってみることにした。

Targeting Windows 10 with your Apache Cordova app
https://blogs.msdn.microsoft.com/visualstudio/2015/07/29/targeting-windows-10-with-your-apache-cordova-app/

Introducing the Windows 10 Apache Cordova platform
https://blogs.msdn.microsoft.com/visualstudio/2015/04/30/introducing-the-windows-10-apache-cordova-platform/

Unable to add Windows Target Version as Windows 10 in Visual Studio 2015 Cordova Project
http://stackoverflow.com/questions/32707696/unable-to-add-windows-target-version-as-windows-10-in-visual-studio-2015-cordova

 

VS のセットアップを実行して UWP 8.x 関連モジュールを削除し、代わりに Universal Windows App Development Tools を入れてみた。これでデバッグ実行してみるとエラーとなった。エラーログを見ると UWP 8.x SDK の下にある dbghelp.dll を使おうとして file not found エラーになっていたので、再び UWP 8.x 用の tools を入れてデバッグ実行してみたところ、前回の投稿で作ったコードは期待通りに動き、sqlite のデータベースファイルが作られた。

デバッグ実行は Windows 10 Mobile のエミュレーター上で行われた。本当は UWP のデスクトップ アプリケーションとして実行したいのだが、その方法が見つからない。ただ動作確認としてはギリギリ許容範囲内の重さなので、方法が見つかるまではこのやり方で作業してみることにする。

追記

Windows 10 UWP デスクトップ アプリケーションを作れないと書いたが、のちほどプラットフォームに Windows-x86 を選んでみたところ UWP のデスクトップアプリをデバッグ実行できた。

また、JavaScript Console に SQLite などのログが出力されないことがよくあったが、おそらく起動時に DB を開いているために、Console 側の準備ができていないのかもしれない。ボタンをクリックして DB を開くようにしたらログが必ず出力されるようになった。