2012年11月22日木曜日

[Android] テンプレートを作成する(プロジェクト編)

ADT 20.0.0から追加されたテンプレート機能ですが、オリジナルのテンプレートを作成することができます。

プロジェクトのテンプレートは[SDK_ROOT]/tools/templates/projects/NewAndroidApplication/配下にあります。

まず、テンプレートを変更・追加をする前に、templatesフォルダをどこかにコピーしておいてください。SDK・ADTがバージョンアップすると書き換えられる可能性があります。(ADT21.0.0にしたら書き換えられた(´;ω;`))


デフォルトのテンプレートだと以下のような構成です。


私の場合、サポートライブラリなどはあまり使わないため、以下のファイルを編集します。

template.xml
<?xml version="1.0"?>
<template
    format="1"
    revision="1"
    name="New Android Application"
    description="Creates a new Android application with an activity.">
<!--
    <dependency name="android-support-v4" revision="8" />
-->

    <thumbs>
        <thumb>template_new_project.png</thumb>
    </thumbs>

    <category value="Applications" />

    <parameter
        id="packageName"
        name="Package name"
        type="string"
        constraints="package"
        default="com.mycompany.myapp" />

    <parameter
        id="appTitle"
        name="Application title"
        type="string"
        constraints="nonempty"
        default="My Application" />

    <parameter
        id="minApi"
        name="Minimum API level"
        type="string"
        constraints="apilevel"
        default="7" />

    <!--
      Usually the same as minApi, but when minApi is a code name this will be the corresponding
      API level
    -->
    <parameter
        id="minApiLevel"
        name="Minimum API level"
        type="string"
        constraints="apilevel"
        default="7" />

    <parameter
        id="targetApi"
        name="Target API level"
        type="string"
        constraints="apilevel"
        default="15" />

    <parameter
        id="buildApi"
        name="Build API level"
        type="string"
        constraints="apilevel"
        default="15" />

    <parameter
        id="copyIcons"
        name="Include launcher icons"
        type="boolean"
        default="true" />

    <globals file="globals.xml.ftl" />
    <execute file="recipe.xml.ftl" />

</template>


8行目をコメントアウトしてサポートライブラリを追加しないようにしました。

※minApiLevelとかのdefaultを変更したらプロジェクト作成時の初期値が変わるかと思ったけど何も変わらない。。。

recipe.xml.ftl
<?xml version="1.0"?>
<recipe>
    <instantiate from="AndroidManifest.xml.ftl" />

<#if copyIcons>
    <copy from="res/drawable" />
    <copy from="res/drawable-hdpi" />
    <copy from="res/drawable-mdpi" />
    <copy from="res/drawable-xhdpi" />
</#if>
    <copy from="res/values/styles.xml" />
<#if buildApi gte 11>
    <copy from="res/values-v11/styles.xml" />
</#if>
<#if buildApi gte 14>
    <copy from="res/values-v14/styles.xml" />
</#if>

    <instantiate from="res/values/strings.xml.ftl" />
</recipe>


6行目にdrawableフォルダをコピーする処理を追加しました。
デフォルトではdrawableフォルダが無いのでtemplates/projects/NewAndroidApplication/root/res/にフォルダを作成し、適当な画像やxmlなどを置きます。




最後にデフォルトではdrawable-hdpiフォルダなどにic_action_search.pngがありますが、普段は使わないので削除します。

これでプロジェクトを作成すると以下のような構成になります。



次回はActivityのテンプレートを作成したいと思います。