build.xml をもとにビルド結果の apk 名を決めて署名する Makefile

Android アプリケーションのビルドにコマンドラインツールである ant を使っている場合、署名しなければインストールできないし、いちいち署名するコマンドを入力するのも手間。複数のアプリを管理している場合はとくに。

ということで build.xml からできあがるモジュール名を推定して、(とりあえずデバッグ用の)署名を付すところまで実行する Makefile をでっちあげた。
xpath モジュールを使って build.xml 内の project ルート要素の name 属性を取得し、これをもとにビルド結果の apk 名を推定している。

ZIPALIGN=${ANDROID_SDK_HOME}/tools/zipalign

TARGET=`if [ -f build.xml ]; then\
 xpath -q -e "/project/@name" build.xml\
 |sed -e "s/.*\\"\\(.*\\)\\"/\\1/"; fi`

TARGET_D=bin/${TARGET}-debug.apk
TARGET_R=bin/${TARGET}-release.apk
UNSIGNED=bin/${TARGET}-release-unsigned.apk

.PHONY: check_target_name debug release clean

debug: check_target_name
        ant debug

clean:
        ant clean

release: check_target_name
        ant release
        jarsigner\
 -keystore ~/.android/debug.keystore -storepass android\
 "${UNSIGNED}" androiddebugkey
        ${ZIPALIGN} -v -f 4 "${UNSIGNED}" "${TARGET_R}"

check_target_name:
        @test -n "${TARGET}"

xpath コマンドが入ってない人は apt-get install libxml-xpath-perl などして(XPath.pm を含むパッケージを)導入してください。