2013年3月25日月曜日

プロジェクト作成時にSupport Libraryのソース関連付けを行う方法

注意

Android SDKのファイルを変更しますので、自己責任において行ってください。

環境

Mac OS X Mountain Lion
Eclipse Juno Service Release 2
ADT 21.1.0

はじめに

プロジェクトにSupport Libraryのソースを関連づけるには
/libsディレクトリに
android-support-v4.jar.propertiesファイルを
下記の内容で作成します。
src=<android-sdk-root>/extras/android/support/v4/src
※<android-sdk-root>の部分は、Android SDKを配置したパスを指定します。
設定を反映させるには、Eclipseから該当プロジェクトの開き直しを行います。
[Close Project] -> [Open Project]
反映されない場合は、Eclipseの再起動で反映されるかもしれません。

今回は、上記の作業を新規プロジェクト作成時に自動でやってしまおうというものです。

設定

<android-sdk-root>/tools/templates/projects/NewAndroidApplication/以下のファイルに変更を加えて行きます。
※適宜バックアップを取ってから、変更を行う事をおすすめします。

1. テンプレートへandroid-support-v4.jar.propertiesを追加
<android-sdk-root>/tools/templates/projects/NewAndroidApplication/root/にlibsディレクトリを作成して、android-support-v4.jar.propertiesを配置します。

2. テンプレートのrecipe.xml.ftlファイルを編集
<android-sdk-root>/tools/templates/projects/NewAndroidApplication/root/の
recipe.xml.ftlをテキストエディタで開きます。
下記の21、22行を追記して、ファイルを保存します。
<?xml version="1.0"?>
<recipe>
    <instantiate from="AndroidManifest.xml.ftl" />

<#if copyIcons>
    <copy from="res/drawable-hdpi" />
    <copy from="res/drawable-mdpi" />
    <copy from="res/drawable-xhdpi" />
</#if>
    <instantiate from="res/values/styles.xml.ftl" />
<#if buildApi gte 11 && baseTheme != "none">
    <instantiate from="res/values-v11/styles_hc.xml.ftl"
                   to="res/values-v11/styles.xml" />
</#if>
<#if buildApi gte 14 && baseTheme?contains("darkactionbar")>
    <copy from="res/values-v14/styles_ics.xml"
            to="res/values-v14/styles.xml" />
</#if>

    <instantiate from="res/values/strings.xml.ftl" />
    <copy from="libs/android-support-v4.jar.properties"
     to="libs/android-support-v4.jar.properties" />
</recipe>
これで、設定は完了です。

試してみる

新規作成ウィーザードからAndroid Application Projectを作成すると
/libs配下にandroid-support-v4.jar.propertiesが追加されるようになりました。


まとめ

今回の記事ですが、メソッドをコード補完やOverrideした時に「引数の変数名がarg0, arg1...で分かりにくいよね?」というのが発端でした。
結論としては
Support Libraryのクラスを利用したときに
Support Libraryのソース関連付けを行っていなかったため
Eclipseにより変数名がarg0, arg1... と設定されていたということです。

この辺りの話は、下記の本に記載があります。
炎のAndroid開発道場
リックテレコム 書籍情報
http://www.ric.co.jp/book/contents/book_901.html

.gitignoreなんかも、プロジェクト作成時に追加されるようにすると便利かも知れません。


0 件のコメント:

コメントを投稿