漆黒な技術メモ

管理人が必要に応じて自分のメモを好き勝手に投下するたまり場的ブログ

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つをいれ、起動f:id:igbt3116redtrain:20150512012945p:plain
動いた。よかった…

今日はここまで

お世話になったサイト様

minor.hatenablog.com