Androidデバイス間でP2P通信できるAllJoynをためしてみた。
横浜Androidプラットフォーム部第18回勉強会でAndroid Builders Summitの紹介があったときに はじめてAllJoynのプロジェクトを知ったので、簡単にサンプルを試してみました。
まだ、Androidデバイス間のP2P通信ができるおもしろいところまでいっていないですが、
次回ということで。ひとつ。
AllJoynとは
Qualcommが作ってるDbusをデバイス間にも拡張したP2Pシステムらしい。
オープンソースなのでGitHubにて公開されています。
froyoとgingerbreadの他、ICSでも動作します。
プロジェクトのサイトは以下
https://www.alljoyn.org/
前提要件
Android SDK Android NDK Eclipse Eclipse ADT plug-in
その他の必要なパッケージ
aptitude install scons
Android SDKをインストール
下記のサイトを参考にしてください。
http://developer.android.com/intl/ja/sdk/index.html
Eclipse と ADT plug-in についても記述されているとおもうので省略します。
Android NDKをインストール
# mkdir -p $HOME/alljoyn # cd $HOME/alljoyn # wget http://dl.google.com/android/ndk/android-ndk-r7b-linux-x86.tar.bz2 # tar jxvf android-ndk-r7b-linux-x86.tar.bz2
詳細は下記のサイトを参考にしてください。
http://developer.android.com/intl/ja/sdk/ndk/index.html
Androidのソース取得とビルド
# mkdir -p $HOME/alljoyn/android-src # cd $HOME/alljoyn/android-src
$HOME/alljoyn/android-srcの中にソースを取得して、ビルドしてください。
詳細は下記のサイトを参考にしてください。(ビルドにすごい時間かかります・・・)
http://source.android.com/source/downloading.html
alljoynのソース取得とビルド
$ mkdir -p $HOME/alljoyn/repo $ cd $HOME/alljoyn/repo $ repo init -u git://github.com/alljoyn/manifest.git $ repo sync $ repo start master --all $ mkdir -p $HOME/alljoyn/lib $ cd $HOME/alljoyn/lib $ wget https://github.com/downloads/KentBeck/junit/junit-4.10.jar $ jar xvf junit-4.10.jar $ export JAVA_HOME=/opt/jdk1.6.0_30/ <-環境によって変更してください。 $ export CLASSPATH=$HOME/alljoyn/lib $ cd $HOME/alljoyn/repo $ scons OS=android CPU=arm ANDROID_NDK=$HOME/alljoyn/android-ndk-r7b ANDROID_SRC=$HOME/alljoyn/android-src WS=off
libcrypto.soを取得
Androidエミュレータを起動する。(※avdの設定hogehogeは作成済みという前提) $ emulator -avd hogehoge $ cd $HOME/alljoyn/repo/build/android/arm/debug/dist/lib $ adb pull /system/lib/libcrypto.so libcrypto.so
なぜか、ターゲットになるAndroidのlibcrypto.soを取得するという手順。
それって、どうなの?
AllJoynデーモンの作成とインストール
$ cd $HOME/alljoyn/repo/build/android/arm/debug/dist/alljoyn_android/alljoyn/ $ $HOME/alljoyn/android-ndk-r7b/ndk-build eclipseを起動 新しいプロジェクトを作成 File -> New -> project -> Android Project [Create project from existing source]を選択 location に [$HOME/alljoyn/repo/build/android/arm/debug/dist/alljoyn_android/alljoyn]を指定 finishを選択 ビルド Project -> Build Project エクスポート File -> Export... -> Export Android Application から alljoyn.apk を作成 AllJoynデーモンプログラムをインストールする。 $ adb install alljoyn.apk
AllJoynデーモンプログラムを実行すると以下のようにバックグラウンドで常駐します。
サンプルの作成とインストール
alljoynのサンプルで動作検証する。
Simple Clientアプリ
eclipseを起動 新しいプロジェクトを作成 File -> New -> project -> Android Project [Create project from existing source]を選択 location に [$HOME/alljoyn/repo/build/android/arm/debug/dist/java/samples/simple/client]を指定 finishを選択 ビルド Project -> Build Project エクスポート File -> Export... -> Export Android Application から Client.apk を作成
Simple Serviceアプリ
eclipseを起動 新しいプロジェクトを作成 File -> New -> project -> Android Project [Create project from existing source]を選択 location に [$HOME/alljoyn/repo/build/android/arm/debug/dist/java/samples/simple/service]を指定 finishを選択 ビルド Project -> Build Project エクスポート File -> Export... -> Export Android Application から Service.apk を作成
サンプルアプリをインストールする。
$ adb install Client.apk $ adb install Service.apk
検証方法
以下の順番で実行する。
AllJoynデーモン(alljoyn.apk)
Simple Service(Service.apk) ※必ずHOMEボタンでぬけること。BACKボタンで抜けるとうまく動作しません。
Simple Client(Client.apk)
クライアントアプリ(Client.apk)のアクティビティの「Enter Message」に文字を入力し、
Enterキーを押すと、Simple Serviceが応答し、検証できます。
以下が成功した画面です。