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 を含むパッケージを)導入してください。