ストアに出しているアプリをインストールした後に、
次回リリース予定のアプリでアップデート(上書き)しても
エラーが出ないかテストしようとしたら、
そもそも上書きできない…
なぜかインストールできない…
詰んだ…!
となった時の記録と、その時の解決方法。
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 をつけると上書きできるようになるみたいです。
<感想>
署名のエラーだったので、
証明書やキーチェーン関係を触らないといけないと思ったのですが、
触らずに済んで安心しました…。