先日とあるアプリの開発に関わったけど、最後の最後で納品したapkが
ストア登録に失敗するということで、ドタバタしてしまった。

理由はapkをビルドした時にversionName変えてたけど、versionCode変えてなかったとか
署名したとかしてないとか、そんなこと。
どこかを失敗するたびに、発注者>ディレクター>プログラマーというやり取りが
(全員別の会社で物理的にも離れてた)
発生してしまい、期限が迫ってるところでなかなか胃がキリキリする展開だった。

そんな値は先に決めておけというのが次回に向けてのTryなんだろうけど
とはいえビルドした人への情報提供不足やビルドの設定ミスで失敗しないとも
限らないのでチェックしてから納品しましょうということで。

最後にビルドしたものを納品した時はこんな方法で確認してから納品した。

署名されてるかどうか確認する

 
jarsigner -verify -verbose -certs hoge.apk


署名がされていれば、署名の組織の情報とかでてくる。

 
X.509, CN=Hoge Fuga, OU=company, O=hogehoge Ltd., L=Tokyo, C=jp
ーーー以下略ーーー


されて無ければ、debug用の署名をされたことになってる。

 
X.509, CN=Android Debug, O=Android, C=US
ーーー以下略ーーー


android:versionCodeとandroid:versionNameを調べる

コマンドラインで以下を実行
 
aapt l -a hoge.apk


こんな結果が出てくる。

 
E: manifest (line=2)
A: android:versionCode(0x0101021b)=(type 0x10)0x3
A: android:versionName(0x0101021c)="1.20" (Raw: "1.20")
ーーー以下略ーーー


android:versionCodeが3で、android:versionNameが1.20

ってことでいいのかな。
jarsignerもaaptもAndroid SDKに含まれてます。
パスが通してあれば、普通に使えます。