2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Azure DevOps (旧VSTS) の Android Signing で Zipalign を ON にしよう

Posted at

【問題】Azure DevOps でビルドした .apk が動かない?

Xamarin プロジェクトのビルドを Azure DevOps (当時は VSTS) に乗せたかったのですが、作成された .apk が動かなくて悩んでいました

  • .ipa は動く
  • ローカルPCでビルドすれば動く
  • インストールはできる
  • 起動直後にスプラッシュ スクリーンより前に落ちる
  • AppCenter に Crash を記録する前に落ちる

だいぶ長い間ネグっていたのですが、やっと解決したので報告します。

【解決】原因は zipalign

Android Device Monitor でアプリが起動するときの様子を観察したところ、次のようなエラー メッセージが出ていました。Tag は monodroid-assembly です。

Assembly 'assemblies/hoge.dll' is located at a bad address 0x9e3eb44e
You MUST run 'zipalign' on base.apk

なるほど、どうしてもっと早く Android Device Monitor を見なかったんだ。 Android Signing / Zipalign Options / ZipalignON に変えたら解決しました :smile:

愚痴

タスク Android Signing の初期状態で Zipalign は OFF になっているし(Sign the APK も OFF ですが)、説明も次のような感じで、

Select if you want to zipalign your package. This reduces the amount of RAM consumed by an app.

別に OFF のままでもよさそうじゃないですか :angry:

【ハズレ】署名を疑う

はじめは署名を疑っていました。 Android Signing / Signing Options / Jarsigner arguments は本当に初期値 -verbose -sigalg MD5withRSA -digestalg SHA1 のままでよいのか、という疑いです。

署名に異常が無いか調べます:

jarsigner -verify -verbose -certs hoge.apk

実機にインストールして動作を確認します:

adb install hoge.apk

比較のため、ローカルPCでも Azure DevOps と同じコマンドで署名してみます:

jarsigner -keystore Hoge.keystore -storepass xxx -keypass xxx -verbose -sigalg MD5withRSA -digestalg SHA1 -signedjar hoge.apk hoge-unsigned.apk Hoge

次のような状況でした。

.apk 署名の verify アプリの動作
Azure DevOps で署名した .apk OK 起動直後に終了してしまう
ローカルで jarsigner で署名した .apk OK 起動直後に終了してしまう
ローカルで Visual Studio の GUI で署名した .apk OK 正常に動作する

Visual Studio が実行しているであろうコマンドを調べてみると、-digestalg SHA1-sigalg md5withRSA をデフォルトで指定しているようです。

結局、署名の部分は信用して良さそう、ということになりました。というか、途中で気付いたのですが、もし署名に問題があるのならば、起動以前にインストールの時点で失敗するはずです。 .keystore ファイルを何度かアップロードし直したりしたのに :cry:

参照

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?