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のあれこれを書いているので是非〜

 

0 件のコメント:

コメントを投稿