このエラー最近みたなー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 件のコメント:
コメントを投稿