のらねこの気まま暮らし

技術系だけど、Qiita向きではないポエムとかを書くめったに更新されないヤツ

PhoneGap/cordova 3.0.0rc1でpluginsを利用する

先日、「Ubuntu12.4にphonegap(cordova)をインストールしてカジュアルにネイティブアプリを作成する・・・ための環境を作る呪文」という記事を書きましたが一つ困ったことがある。

$ cordova -v
3.0.0rc1

現在zipで配布されているPhoneGapの最新バージョンは"2.9.0"なのに対し、今回インストールしたのは、"3.0.0"なのだ。
ドキュメントやアップグレードガイドもまだ整っておらず、いくつかネットの情報を漁っても2.Xとか1.Xとかの情報ばかりで、3.0を挙げているものがほとんど無かった。

……いや、僕もこのタイミングでまさかメジャーバージョンアップが入るとは思ってなかった。少し前に入れたMacbook Airのversionは2.9だったんだ。情報をちゃんと追ってなくて申し訳ない。


ともあれ、いざアプリを作ろうとして、pluginsの使い方がわからずに困っていた。
いろいろ試行錯誤した末に、ようやく光明が見えたので、記録しとく。

今回は例としてFile APIを利用するとする。

前提

  • Ubuntu 12.4 上
  • PhoneGap/cordova 3.0.0rc1
  • platfrom android(SDK, ANT設定済み)

CLIからpluginsを追加する

PhoneGap/cordova APIリポジトリは以下においてあった(これだと分かるまでに相当の時間を費やした……)ので、そこからインストールする。

https://github.com/apache:github.com/apache

$ cordova plugin add https://github.com/apache/cordova-plugin-file
$ cordova plugin add https://github.com/apache/cordova-plugin-file-transfer

config.xmlにpluginの利用を明記する

platform毎にpluginの設定をconfig.xmlに記述する必要がある。androidは以下のファイル

platforms/android/res/xml/config.xml

の、"plugins"のセクションに以下を追加。

<plugin name="File" value="org.apache.cordova.FileUtils" /> 
<plugin name="FileTransfer" value="org.apache.cordova.FileTransfer" />

AndroidManifest.xmlにpermissionを追加

外部ストレージへのアクセス権が必要なので、permissionを追加する

platforms/android/AndroidManifest.xml

"manifest"のセクションに"uses-permission"を追加する。詳しくはAndroidのドキュメントを参照してくれたまえ。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

アプリケーションのJSからファイルを呼び出す。

あとは必要なAPIのドキュメントを参照したり他のサイトを参考にしても動くと思う。

var ft = new FileTransfer();

ひとまず、これでAPIのアクセスができるようになる。

まとめ

apacheリポジトリをplaginに指定し、platformのconfig.xmlからpluginを呼び出してやればいい。至ってシンプル。


余談だが、rippleというエミュレートのツールがあるのだが、いくつかの記事にあるように動かしても、localhost:8000へのアクセスでどうやらJSがループに陥りエミュレートする前にブラウザが沈黙してしまう。これも3.0.0の影響なのだろうか・・・・? Build前のリソースをWEB開発と同じようにデバッグできるのであれば、それは相当に便利なんだが・・・。ひとまずはbuildとadb -r installで乗り切るしかなさそうだ。