2013年9月18日水曜日

Android SDK tools 22.2で新しいプロジェクトが作成できない問題を直す

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
 昨日Android SDKがアップデートされたようです。Android SDK tools 22.2。すると新規プロジェクト作成の際ウィザードで以下のエラーが出て進めなくなるそうです。



 このエラー最近みたなーCode Template触ってるときになー。あー。template.xmlだろうかねー、という事で色々見たら動く様に出来たのでメモっておきます。Code Templateってなにという方は「Using Code Templates」を読むといいんじゃないでしょうか。

Issueにもあがってるしすぐ直ったバージョンが降ってくると思いますが、緊急の場合はまーやったらいいと思います。


Eclipse+ADTの場合


 結論から言うとCode Templateのtemplate.xmlが腐っています(正確にはCode TemplateのアップデートにADT plugin側が追い付いていないぽい)。Code TemplateはSDKの以下の場所にあります。

$ANDROID_HOME/tools/templates

 いっぱいあるんですけど、ここでは"BlankActivity"と"FullscreenActivity"だけ見ます。これらはそれぞれ以下のパスにあります。

$ANDROID_HOME/tools/templates/activities/BlankActivity
$ANDROID_HOME/tools/templates/activities/FullscreenActivity

BlankActivityのtemplate.xmlを直す


 まずはBlankActivityから。template.xmlの中身を見ると・・・。

$ANDROID_HOME/tools/templates/activities/BlankActivity/template.xml

 以下の様になっています(冒頭だけ抜粋)。この内、問題となるのはdependency要素です。name属性に"appcompat"、version属性に"v7"とあります。dependency要素はテンプレートの依存性を記述する為のものですが、今までは"android-support-v4"しかサポートしてませんでした(InstallDependencyPage.javaにもandroid-support-v4の名前が直書きされており、コメントにもオンリーやでと書かれています)。

<?xml version="1.0"?>
<template
    format="3"
    revision="3"
    name="Blank Activity"
    description="Creates a new blank activity, with an action bar
     and optional navigational elements such as tabs or horizontal swipe.">

    <dependency name="appcompat" version="v7" />

    <category value="Activities" />

 name="appcompat"という事はappcompatをサポートするんだなーActionBarとかNavigation Drawerのテンプレートが追加されるんだろーなーという期待を持てますが今回のリリースには入ってなかったようで「appcompatってなんだよあーん?」とエラーになるみたいです。

 dependency要素を以下の様に書き換えるといつも通りに使える様に戻ります。

<dependency name="android-support-v4" revision="8" />


FullscreenActivityのtemplate.xmlを直す


 次にFullscreenActivityのtemplate.xmlを見ると、dependency要素が二つあります。name="support"ってなんやねん!という事で、上のname="support"の方を消せば動きます。
 
<?xml version="1.0"?>
<template
    format="3"
    revision="3"
    name="Fullscreen Activity"
    description="Creates a new activity that toggles the visibility of the system UI (status and navigation bars) and action bar upon user interaction."
    minApi="4"
    minBuildApi="16">
    <dependency name="support" version="v4" /> ← 消す
    <dependency name="android-support-v4" revision="8" />

    <category value="Activities" />

Android Studioの場合


 あーもうフラグメントの波が・・・。めんどうなのでまだ書きません。現象としてはBlankActivityでNavigation Typeを"Fixed Tabs + Swipe"とかにしても、"None"のソースが吐かれたりします。Android StudioもCode Templateを内包しているので、そこを直せば動くと思いますがめんどうなのでやってません。

おわりに


9月の末に発売予定の「Effective Android 正式版」にCode Templateのあれこれを書いているので是非〜

 

2013年9月16日月曜日

Genymotionのエミュレータはマルチタッチをサポートしていた

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
 Genymotionはサックサクでいいなー、でも今のところ4.1.1以上のエミュしかないっぽいので、古いの試す時めんどいなー、とか思いつつGenymotionの公式をちらほら見ていたら「マルチタッチ出来るぜ!」みたいな事が書いてあって驚いたので試したらマジで動いたので書く。

Multi-touch Gestures


 Android SDKの「Android Virtual Device Manager」で作って動かすAndroidのエミュレータはいまだにマルチタッチのサポートをしていない!→だから辛い!→iOSのシミュなら出来るのに!→でもまーエミュ使わないしいいか!→Genymotionはエミュのくせに早い!→マルチタッチやっぱほしい!→「出来るで」→(^q^)

 User Guideの"Genymotion Application"の所に"Multi-touch Gestures"という項目があります。とりあえず、操作部分の解説を以下に訳しておきます。

右クリック + マウスを左に移動: ズームイン
右クリック + マウスを右に移動: ズームアウト
右クリック + マウスを上に移動: 上方向の二本指スワイプ
右クリック + マウスを下に移動: 下方向の二本指スワイプ
SHIFT + 右クリック + マウスを左に移動: 反時計周りの回転
SHIFT + 右クリック + マウスを右に移動: 時計回りの回転

※: Mac OS X系の場合、「右クリック」を「CTRL + クリック」に置き換えて下さい。

Multi-touch Gesturesを試す


 早速試してみます。Genymotionのエミュのブラウザでブログを開いて、ズームイン操作をすると・・・。


 すっげマジうごいたすっげ。

おわりに


 とりあえずタッチイベントをチラ見したら当然ちゃんとイベント来てました。座標系とかタイミングとかどうなるのか細かく検証はしてないですけど、簡単なマルチタッチ操作の動作確認はエミュで出来そうです。いやーえらい。Genymotionえらい。

2013年9月11日水曜日

Android Studio 0.2.7をビルドしてみた(Macで)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Android Studioをキッチリ触っていこうかなーと思っていたら、なんかこの辺り(http://tools.android.com/build/studio)に「Android Studioのソースはここやで」、とか書いてあったので早速ソース落としてビルドしたら簡単だったのでメモっておきます。

ソースを取得する


 ソースはrepo initでリポジトリの設定してrepo syncするだけです。もしrepoが無い場合は以下を参照して入れて下さい。

Downloading the Source :
http://source.android.com/source/downloading.html

 Android Studioのソースをダウンロードする為のディレクトリを作り、そこで以下のようにrepo initします。そしてrepo sync。

mkdir aosp; cd aosp
repo init -u https://android.googlesource.com/platform/manifest -g tools
repo sync

 これでどさーっとAndroid Studio関連のソースが落ちてきます。Android Studioのソースは以下のパスにあります。
aosp/tools/idea/

ビルドする


 ビルドは何か色々いるのかと思ったら凄く簡単でした。jdk1.6以上とantが入っていればいける様です。
以下のディレクトリに移動してantを叩くだけです。ビルドが始まります。
cd tools/idea
ant

 ビルド後以下のパスに各プラットフォーム向けのバイナリのzipファイルが生成されます。

aosp/tools/idea/out/artifacts/android-studio-SNAPSHOT.mac.zip

起動してみる


 android-studio-SNAPSHOT.mac.zipを解凍すると・・・



 すげーまじでAndroid Studio.appが出来ているーー。という事で起動してみます。



 無事起動できました。バージョンを見ると0.2.7です。

おわりに


 なんかバグがあったり気に入らない部分あったら自分で書き換えたらいいんじゃないでしょうかー(うつむきながら)
ソースチラ見したけど何がどーなってるのかじぇんじぇんわかりませんでした。