Eclipse を使うと署名済みの apk パッケージまで作れるが、 GUIを使って一連の操作を毎回するのは面倒なので、 ant を使ったリリース方法を調べてみた。
build.xml の作成
ant 化対応は非常に簡単で、プロジェクトのトップディレクトリで次のコマンドを実行すれば良い。% ${ANDROID_SDK}/tools/android update project --path .
この時点で「ant debug」を実行すると bin/${project名}-debug.apk にデバック用のアプリが作成できる。ただ、SDK Tools r14 から若干ファイルの構成が変更されているので注意が必要である。
- build.xml
- ant用の構築ファイル
- ant.properties (旧 build.properties)
- ユーザが追加して使用するもの。普通はコッチに書く。
- local.properties
- 構築マシン固有の情報。現在は SDKへのパスのみ? VCSへの登録は避けるべきファイル
- project.properties (旧 default.properties)
- ADTによって維持される情報。
パスワードの自動入力
プロパティ値として key.store/key.alias/key.store.password/key.alias.password を設定しておけば、あとは万事取り計らってくれるようである。ただ、パスワード情報を記載するので、VCSへの登録される可能性が高いant.properties への記述は避けるべきで、VCS には登録しない secure.properties を作成して、コイツを読み込むように build.xml を変更するべきかなぁ。。。build.xml
...
<property file="ant.properties" />
<property file="secure.properties" /> <!-- ここ追加 -->
...
secure.properties
key.store=path-of-keystore
key.alias=alias
key.alias.password=password
key.store.password=password
これで、 「ant release」の実行で bin/${project名}-release.apk に署名済みのapkパッケージが作成される。リリース apk パッケージのファイルのカスタマイズ
ここまで来ると、リリース apk パッケージのファイル名に自動的に構築日時とversionCodeを埋め込みたいのが、エンジニアの心情だと思う。build.xml をよく読むと、一番最後の import 要素の上に、任意のターゲットを追加すると良さ気である。なので、 次の deploy ターゲットを追加してみた。
build.xml
...
<target name="deploy" depends="release" description="deploy">
<xpath input="AndroidManifest.xml"
expression="/manifest/@android:versionCode"
output="config.versionCode"
default="release"
/>
<tstamp>
<format property="config.versionDate" pattern="yyyyMMdd" />
</tstamp>
<property name="out.deploy.file"
value="${out.absolute.dir}/${ant.project.name}-${config.versionDate}-${config.versionCode}.apk"
/>
<copy file="${out.final.file}"
tofile="${out.deploy.file}"
overwrite="true"
/>
<echo>Deploy Package: ${out.deploy.file}</echo>
</target>
...
これで、 「ant deploy」の実行で bin/${project名}-YYYYYMMDD-V.apk に署名済みのapkパッケージが作成される。ターゲット名はあまり良く無いかも。。。
0 件のコメント:
コメントを投稿