原典:http://docs.rosjava.googlecode.com/hg/android_core/html/index.html
1)ソースコードの入手
まず以下の2つが必要なのでイントールしましょう。
すでにインストールしている人はAndroid SKDを最新にアップデートしておきましょう(必須です。)
あとはroswsでインストールします。2)ビルド
android_coreが必要とするgoogleパッケージをビルドして、その後、メッセージをアップデートするためrosjava_messagesをビルドします。
roscd
cd google
./gradlew install
roscd rosjava_benchmarks
../gradlew install
roscd rosjava_messages
../gradlew install
roscd android_core
./gradlew debug
以上です。
roscd android_tutorial_pubsub
ant installd
とします。するとデバイスにインストールされるので、
アプリ一覧から選択して起動。
Mater選択画面では"New Master"を選択しましょう。
アプリ内でMasterが立ち上がるみたいです。
以上です。
以下は参考情報なので気にしないでいいです。
原典のドキュメント通りにやると
私の環境では以下のようなエラーがでました。なのでgoogleパッケージのビルドを追加。
roscd
cd google
./gradlew install
roscd rosjava_benchmarks
../gradlew install
roscd rosjava_messages
../gradlew install
で、最後にandroid_coreをビルド。
roscd android_core
./gradlew debug
以上です。
3)サンプルの実行
androidのエミュレータを上げた状態で、roscd android_tutorial_pubsub
ant installd
とします。するとデバイスにインストールされるので、
アプリ一覧から選択して起動。
Mater選択画面では"New Master"を選択しましょう。
アプリ内でMasterが立ち上がるみたいです。
以上です。
以下は参考情報なので気にしないでいいです。
原典のドキュメント通りにやると
私の環境では以下のようなエラーがでました。なのでgoogleパッケージのビルドを追加。
[javac] Compiling 40 source files to /home/ogutti/ros/android_core/android_h
oneycomb_mr2/bin/classes
[javac] /home/ogutti/ros/android_core/android_honeycomb_mr2/src/org/ros/andr
oid/view/visualization/layer/CompressedBitmapLayer.java:40: パッケージ compressed_visualization_transport_msgs は存在しません。
(参考:http://answers.ros.org/question/32319/installing-rosjava-android_core-is-missing/)
さらに以下のようなエラーがでました。なのでrosjava_benchmarksのビルドを追加。
(これはいらないはずだが・・・)
[javac] /home/ogutti/ros/android_core/android_benchmarks/src/org/ros/android/android_benchmarks/MainActivity.java:25: シンボルを見つけられません。
[javac] シンボル: クラス TransformBenchmark
[javac] 場所 : org.ros.rosjava_benchmarks の パッケージ
[javac] import org.ros.rosjava_benchmarks.TransformBenchmark;
[javac] ^
[javac] /home/ogutti/ros/android_core/android_benchmarks/src/org/ros/android/android_benchmarks/MainActivity.java:61: シンボルを見つけられません。
[javac] シンボル: クラス TransformBenchmark
[javac] 場所 : org.ros.android.android_benchmarks.MainActivity の クラス
[javac] nodeMainExecutor.execute(new TransformBenchmark(), nodeConfiguration);
さらに:android_benchmarksで以下のようなエラーがたくさんでました。これはAndroid SDKをアップデートしました。
[dx] UNEXPECTED TOP-LEVEL EXCEPTION:
[dx] java.lang.IllegalArgumentException: already added: Lorg/apache/xmlrp
c/XmlRpcRequestConfig;....
さらにandroid_tutorial_hokuyoで失敗。SDKアップデート後にcleanしていなかったので、
gradlew cleanして再ビルドしたら直りました。
はじめましてTHと申します。ROS環境構築でとても参考にさせていただいています。
返信削除android_benchmarksでdx関連でエラーが出てしまい、先に進めない状態です(android toolsは最新のr20)
android_gingerbread_mr1,android_honeycomb_mr2,android_benchmarksはフォルダごとにandroid update projectしないといけないと思いますが「どんなコマンドオプション(-targetなど)で実行されたか」ご教授いただけないでしょうか。よろしくお願いいたします。
dx関連はエラーでなく警告ではないでしょうか?
削除本当のエラーはdxに隠れたところにあると思いますので、もう一度エラーメッセージをよくみてみることをおすすめします。
フォルダごとにandroid update projectはしていません。
SKDはandroidを実行して、普通にupdateしただけです。
あとは書いたとおりです。
何か分かりましたら追記ください。
言われるとおりdxはワーニングでした。まるで止まってるようにみえていましたが、20分ほど放置したらビルドできました(失礼しました)
削除ちなみに、いくつかのフォルダはandroid update projectしないと下記エラーがでてビルド出来ませんでした。エラー内容をコピペしておきます。
Error: The project either has no target set or the target is invalid.
Please provide a --target to the 'android update' command.
:android_gingerbread_mr1:debug
Buildfile: build.xml does not exist!
Build failed
おお、よかったです。
返信削除なるほど。追加情報ありがとうございます!
Android SDKでプラットフォームをいくつか入れると、THさんが言われる状況になるっぽいdす。
返信削除android update project -p android_honeycomb_mr2 -t android-13
とするといいみたいです。
相変わらずrosjavaは開発が激しくてついていくのが大変です。。。
例えば、ノード名は
GraphName.of("nodename")
とするようになったようです。
また現在、android_benchmarksがビルドできないので、settings.gradleから削除してみました。