ストアに出ているアプリのアップデートテストをしようとしたら、つまった…困った…!【解決済み】iOS、Android


ストアに出しているアプリをインストールした後に、
次回リリース予定のアプリでアップデート(上書き)しても
エラーが出ないかテストしようとしたら、

そもそも上書きできない…
なぜかインストールできない…
詰んだ…!
となった時の記録と、その時の解決方法。

iOSの場合

<状況>

  • まず、App Storeにある「リリース済みのアプリ」を実機にインストール。
  • その後、Xcodeで制作中の「次回リリース予定のアプリ」をDeployGateにアップ。
    • Xcodeで、Product > Archive
    • Export > Ad Hoc で進め、作成したipaファイルをアップ。
  • 実機でDeployGateの「インストール」ボタンをタップしたが、何度押しても反応がない。  インストールされない。

<解決方法>

・「インストール」ボタンの左側にある「App Store版を上書き」をタップ。
 すると無事インストールできました。
 

<感想>

「App Store版を上書き」をタップしたら、
もしかしたら「次回リリース予定のアプリ」がApp Storeにアップされてしまうのでは…!
と一瞬怖くなりましたが、
全然そんなことはありませんでした。
「App Storeにあるアプリを上書き」じゃなく「App Store版のアプリを上書き」だったのね…
かんちがい。

Androidの場合

<状況>

  • まず、Playストアにある「リリース済みのアプリ」を実機にインストール。
  • Android StudioでRunボタン(ツールバーの緑の三角)を使用して上書きを試みる。
  • できない。エラー発生。
【エラー内容】


Application Installation Failed
Installation failed with message
INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES.
It is possible that this issue is resolved by uninstalling an existing version of the apk if it is present, and then re-installing.
WARNING: UnInstalling will remove the application data!
Do you want to uninstall the existing application?

インストール済みのアプリと、上書きしようとしているアプリの証明書が違う事が原因らしい。
そのため、一旦アンインストールしてからアプリを入れ直せばエラーなくインストールできる。
しかし、それではストアに出ているアプリのアップデートテストにならない。

<他の方法でインストールテストを試みる>

  • まず、Playストアにある「リリース済みのアプリ」を実機にインストール。
  • デバック用のapkファイルを作成。
    • Android Studioの Build > Generate Signed APK
    • ModuleやKey storeを設定し、Build Typeを「debug」にしてapkファイルを作成
  • DeployGateに作成したapkファイルをアップ。
  • 実機でDeployGateの「インストール」ボタンをタップしようとしたが、できない。
    • 「署名が異なります」と表示される。
    • また、「異なる証明書で署名されたアプリ(バージョンXXX)が既にインストールされています。新しいアプリをインストールする前に、一度アンインストールしてください。」と表示される。

そのため、一旦アンインストールしてからアプリを入れ直せばエラーなくインストールできる。
しかし、それではストアに出ているアプリのアップデートテストにならない。

<解決方法1>

  • まず、Playストアにある「リリース済みのアプリ」を実機にインストール。
  • リリース用(またはデバック用)のapkファイルを作成。
    • Android Studioの Build > Generate Signed APK
    • ModuleやKey storeを設定し、Build Typeを「release」(または「debug」)にしてapkファイルを作成。
  • (Macのため)ターミナルで、まず作成したapkファイルがある場所まで移動。実機をPCにつないだ状態で下記を実行。
adb install -r ○○○○○.apk
  • できた!

<解決方法2>

  • まず、Playストアにある「リリース済みのアプリ」を実機にインストール。
  • リリース用のapkファイルを作成。
    • Android Studioの Build > Generate Signed APK
    • ModuleやKey storeを設定し、Build Typeを「release」にしてapkファイルを作成。
  • DeployGateに作成したapkファイルをアップ。
  • 実機でDeployGateの「インストール」ボタンをタップ。
  • できた!

<原因>

デバック用のアプリと、リリース用のアプリでは、証明書の署名が違うらしい。

そのため、DeployGateにアップしたデータ(デバック用のアプリ)と
リリース済みのアプリでは署名が違ってしまうため、エラーとなっていたみたい。
そんなわけで、DeployGateに「リリース用のアプリ」をアップすれば、うまくいきました。

また、ターミナルでインストールする時も、 -r を付け忘れるとエラーになりました。
これは既に同じ署名のapkファイルがインストールされている場合はエラーになることが原因らしいです。
-r をつけると上書きできるようになるみたいです。

<感想>

署名のエラーだったので、
証明書やキーチェーン関係を触らないといけないと思ったのですが、
触らずに済んで安心しました…。