🧐

Firebase App Distributionでapk/ipaが異なるpackageとして扱われる条件

2021/11/23に公開

経緯

Firebase App Distributionを使ってて、uploadしたpackageは全部残して欲しいのに、意図せず上書き更新されてしまうことがある。この条件を調べれれば、回避策が見つかるかもと思いネットで調べたが、それらしき内容の記事が見つからなかったので、自前で検証してみた。

なお、Flutterプロジェクトで検証しているため、各nativeのプロジェクトで行った場合と結果が異なる可能性があることは留意頂きたい。

環境

fastlane (2.198.1)
fastlane-plugin-firebase_app_distribution (0.3.1)

localでfastlane経由でbuildしたapk/ipaを、fastlaneのplugin経由でuploadして検証

Firebase App Distributionでapk/ipaが異なるpackageとして扱われる条件

Android (apk)

  • 常に別のpackageとして扱われる

iOS (ipa)

  • 表示version(.区切りのversion)が異なる時に、別のpackageとして扱われる
  • build version(1以上の整数のversion)が異なる時、別のpackageとして扱われる

補足

Android

  • 連続で同じversionでuploadし続けても、常に別のpackageとして扱われていた
  • apkのハッシュ値で判定している様子
    • 同じハッシュ値のapkを手動でuploadしようとした際は、以前にアップロードされていると表示される
    • 同じソースコードで異なるハッシュ値のapkをKaleidoscopeで比較したところ、一切差分が出なかった

iOS

  • 詳細な条件不明だが、同じ表示version & build versionでも別のpackageとして扱われることがある
    • 前回のuploadから日が空いた場合?
    • packageの容量が規定値以上増減した場合?
  • ipaのハッシュ値で判定していない様子
    • 同じハッシュ値のipaを手動でuploadしようとした際は、正常に更新され、メール送信したと表示される
    • 同じソースコードで異なるハッシュ値のipaをKaleidoscopeで比較したところ、以下で差分が出た
      • _CodeSignature配下
      • Frameworks配下
      • Runner(バイナリ)

Discussion