Android向けpahoライブラリを使えるようにしてみた
最近MQTTというプロトコルが注目されており、市場が伸びるといわれているIoTの世界で特に期待されている。
というわけで、管理人もちょっと手を出してみた。
MQTTを用いてプログラムを実装する際、クライアントサイドではpahoというEclipseプロジェクトのライブラリを用いることが一般的っぽい。今回はAndroidを相手に実装したかったのでそれのインストールメモをここに書く
はっきり言おう。すごく厄介だったと
ちなみに管理人はWindowsを使っていて、開発環境もWindowsなのだが、面倒になって一部にLinuxを併用した…
ライブラリそのものを持ってくる
Gitコマンドで持ってくる
管理人はWindowsのコマンドプロンプトにGitを入れていなかったため、SourceTreeのターミナルを使った(たぶん本来の使い方ではない)
git clone http://git.eclipse.org/gitroot/paho/org.eclipse.paho.mqtt.java.git
これでインストールしてくると、多数のソースファイルがインストールされる。
で、これをビルドしてjar(org.eclipse.paho.client.mqttv3-1.0.1.jar , org.eclipse.paho.android.service.jar)を生成し使っていくのが本来の使い方なのだが…
ビルドできなかった
まあ自分の技術力のなさもあるのだろうが…
というわけで別の手を使う。
jarの一部はネットにあるらしい
ここでLinuxの出番。
org.eclipse.paho.client.mqttv3-1.0.1.jarはどうやら落とせるらしいので、コマンドをターミナルにぶち込む
sudo apt-get install curl curl -O https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.client.mqttv3/1.0.1/org.eclipse.paho.client.mqttv3-1.0.1.jar
で落としたjarを必要なところに持ってこればよし
問題のもう一つのjar
なんとかEclipseでビルドができる…かもしれないということで、
EclipseにADTを追加し、org.eclipse.paho.android.serviceプロジェクトをインポートする
このプロジェクトにlibsフォルダを作り、先ほどのorg.….mqttv3-1.0.1.jarと、support-v4-r7.jarというものを持ってくる。
ちなみにsupport-v4-r7.jarはここにあるっぽい
http://mvnrepository.com/artifact/com.google.android/support-v4/r7
で、あとはexportjar.xmlを書き換える必要があるのだが、ここが本当に曲者
まずは、androidjarのプロパティを
<property name="androidjar" value="ADTのディレクトリ/android-tools/sources/android-19" />
に変更し、
javacの設定(真ん中1行)のclasspathの部分を
<target name="buildFiles" depends="init"> <!--省略--> <javac deprecation="on" debug="on" encoding="${classes.encode}" srcdir="${src}" destdir="${classes}" classpath="(android.jarまでの絶対パス)\android.jar;(support-v4-r7.jarまでの絶対パス)\support-v4-r7.jar;(org.eclipse.paho.client.mqttv3-1.0.1.jarまでの絶対パス)\org.eclipse.paho.client.mqttv3-1.0.1.jar;" includeantruntime="false"/> <!--省略--> </target>
とゆー風に絶対パス3つに書き換える
はっきり言おう。
めっちゃ頭悪い書き換えだ
ただ、とりあえずこれ以外で成功しなかった。誰かいい方法あったれ教えてくれ。
とりあえず、これでプロジェクト内distフォルダにorg.eclipse.paho.android.service.jarが作成される。
MQTTのプログラムをこれらを使って動かしてみる
今回はgitで落としたソースについてきたorg.eclipse.paho.android.service.sampleプロジェクトを使う。
例によってlibsフォルダに目的のjar2つをいれ、起動
動いた。よかった…
今日はここまで