ひらい ぶらり Hi-Library

ぷろぐらみんぐについて。ときどきどうでもいいことについて。

SmartWatch2のapkをAndroidStudioでビルドしてみる #vgadvent2013

この記事はVOYAGE GROUP エンジニアブログ : Advent Calendar 2013の16日目の記事になります。

ガジェッターの皆さんこんにちは。@shinbashiです。
昨今では猫も杓子もスマホスマホですが、スマホといえばあれですよね。

f:id:shin_bashi:20131216232756j:plain

SmartWatch2

これですよね。大体の人はもう持ってると思います。便利ですよねー。
なんせ通知が腕時計でみれますし、他にも通知が腕時計でみれますし、たまにカップラーメン食べるときにタイマーつかえますし。
他にもSmartWatch2からandroid端末のカメラのシャッターを切ったり(僕は写真とりませんが)、雨雲が近づいてきたら知らせてくれたりします(空見ればいいんじゃないかな)。

すごくべんりですよね!

実際個人的にはXperiaZ1は大きすぎてポケットから取り出すのも億劫なので、通知をサッと見れるだけでもすごく便利です。

ガジェッターとしてはここで満足ですが、開発者としてはやっぱり自分でアプリを作りたいですね。
新しいもの好きの諸兄は開発はすでにAndroidStudioで行っていると思います。僕もそうです。
ただしSmartWatch用のSDKがgradleに対応しておらず、ADT(eclipce)用のものしか配布されていません。
そこでどうにかAndroidStudioで開発できないか検証してみました。

そんなわけでこの記事はandroidアプリ開発にAndroidStudioを使っており、eclipceでのSmartWatchの開発環境の構築方法をすでに理解している方向けの超ニッチな内容になっております。

eclipceでの環境構築は

KOBE GDG: Android SmartWatch2を触ってみる 1

こちらに丁寧にまとめられていますので、参考にしてください。

それでは初めて行きたいと思います。
最初に申しておきますが、すごく泥臭いです。

まず、ADTの機能でant用に作られているSmartExtensionAPIとSmartExtensionUtilsをgradle用にエクスポートしません。 そもそも僕の環境でexportがまともに動かないことと、AndroidStudio0.3.7現在モジュールをインポートする機能が無いため下手にエクスポートするとディレクトリ構造がぐっちゃぐちゃになってAndroidStudioで快適に開発するつもりが、逆に面倒になりそうでしたのでスマートなやり方はあきらめました。

\1. 新規にAndroidStudioでプロジェクトを作成。SmartExtensionAPIとSmartExtensionUtilsのsrcやらresやらAndroidManifest.xmlをコピーします

\2. 注意点として

  • SmartExtensionAPIのAndroidManifestに書いてあるpackagenameとsrc以下にあるディレクトリ構成は若干違う
  • AndroidManifestにはを追記する必要がある。ビルドに失敗する

などがあります。

\3. CompleSDKにSonyのAPIを指定できないので、同じように動作させるためにSmartExtensionAPIモジュールにANDROID_HOME/add-ons/addon-sony_add-on_sdk_2_1-sony-16/libs以下のjarファイルを追加します

\4. SmartExtensionUtilsはSmartExtensionAPIに依存しているのでbuild.gradleの末尾あたりに

dependencies {
    compile project(':SmartExtensionAPI')
}

モジュールのインポートする旨を記述します

\5. 実際に作成するSmartWatch用のプロジェクトを生成します。今回はSampleアプリを1と同じようにしてgradle用に移してきました。SampleSensorExtensionを使ったので、今回はSmartWatch2用アプリのプロジェクトとモジュールの名前はSampleSensorExtensionとします。

\6. SmartExtensionAPIとSmartExtensionUtilsをインポートします。インポートする機能がないので、それぞれのモジュールディレクトリ(SmartExtensionAPI/SmartExtensionAPI)を、現在のプロジェクトにまるっとコピーします。

\7. SampeSensorExtensionモジュールSmartExtensionUtilsに依存しているのでbuild.gradleの末尾に例によって

dependencies{
    compile project(':SmartExtensionUtils')
}

を追記します。

\8. ProjectStructureを開き、Modulesの中からSampleSensorExtensionを選択し、dependenciesタブから+を押してModule dependencyを選び、SmartExtensionUtilsを追加します

\9. 心の赴くままにSmartWatch用アプリを開発してください。

f:id:shin_bashi:20131217003457j:plain

動いた!

僕の場合は何やら警告がでてましたが、今回の目的はとにかくAndroidStudioでビルドできるかどうかの検証なのでここまでとします。

結論:できたけどeclipceで開発したほうが速そう

AndroidStudioを使うことで開発速度は上がるかもしれませんが、環境構築が面倒なのでネックですね。モジュールのインポートくらいボタンポチでできるようにしたいもんですね。GoogleがクリスマスプレゼントにAndroidStudioを正式リリースとかしてくれないかなぁとか思います。

明日はモンスターハンターとかモンスターストライクが好きなモンスター @kuromatu さんです!きっとモンスターっぽいなにかを語ってくれるんじゃないかと踏んでいます。