2016/12/27

署名済みの apk から署名を削除する方法

Debug Keystore で署名済みの apk が送られてきちゃった。みたいな事は時々あると思うのですが、そういう時は署名を削除して再署名すれば良いのです。

apk の署名とは

apk の署名は以下の 3つのファイルで構成されています1。 そのため、これらのファイルを削除すれば、未署名の apk になります。

  • META-INF/MANIFEST.MF
  • META-INF/CERT.RSA
  • META-INF/CERT.SF

注: CERT.RSA と CERT.SF は別の名前(ANDROID.RSA 等)になっている場合があります。

参考

署名を削除する

コマンドラインだと以下のようにすると良いでしょう。

1
2
3
4
$ zip -d app-debug.apk "META-INF/*"
deleting: META-INF/CERT.RSA
deleting: META-INF/CERT.SF
deleting: META-INF/MANIFEST.MF

この方法だと META-INF ディレクトリ自体を削除してしまうのですが、apk の場合 META-INF にこれ以外のファイルが入ることは無さそうなので2、これで大丈夫だと思われます。

以下のように apksigner verify をするとエラーが出ます。

1
2
3
$ apksigner verify app-debug.apk
DOES NOT VERIFY
ERROR: Missing META-INF/MANIFEST.MF

参考

再署名する

未署名の apk に後から署名する方法がそのまま使えます。 zipalign を忘れないようにしましょう。

未署名の apk に後から署名する方法 | 穀風

  1. 各ファイルの役割については参考リンクが詳しいので、そちらを参照してください 
  2. あくまで経験則。要確認。 
?

0 件のコメント: