デバッグ署名のAPKファイルに本番用の署名をしようとしたところ、結構な数の警告が出た
apksigner sign --ks release.jks app.apk
Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
Number of signers: 1
WARNING: META-INF/android.support.design_material.version not protected by signature. Unauthorized modifications to this JAR entry will not be detected. Delete or move the entry outside of META-INF/.
WARNING: META-INF/androidx.appcompat_appcompat.version not protected by signature. Unauthorized modifications to this JAR entry will not be detected. Delete or move the entry outside of META-INF/.
WARNING: META-INF/androidx.arch.core_core-runtime.version not protected by signature. Unauthorized modifications to this JAR entry will not be detected. Delete or move the entry outside of META-INF/.
WARNING: META-INF/androidx.asynclayoutinflater_asynclayoutinflater.version not protected by signature. Unauthorized modifications to this JAR entry will not be detected. Delete or move the entry outside of META-INF/.
...
警告文を読んでみると
"当該のファイルは署名で保護されない、もし改ざんされても不正は検出されない、ファイルを削除するかMETA-INFの外に移動せよ"
とある
META-INFはその名の通り、メタ情報を扱うディレクトリで
署名情報もここに収納されるようだ
https://docs.oracle.com/javase/jp/1.5.0/guide/jar/jar.html
警告が出ているファイルを見てみると、ほとんどが追加したライブラリのバージョン情報だった
どうやらAndroidStudioがビルド時に各ライブラリのバージョン情報をMETA-INFの中に入れているようだ
これらのバージョン情報が改ざんされた場合、アプリの動作に与える影響は不明だが
ソースコードで参照していないバージョン情報ファイルなので影響は無いと思われる
なので、この警告については無視するか
(自分のアプリでは)削除しても問題なく動くので、気になるようならMETA-INFの署名情報を削除してから署名することにする
zip -d $APK_SRC 'META-INF*'
参考
https://stackoverflow.com/questions/52122546/apk-metainfo-warning/52132597