Android StudioからKotlinで開発していくうち、
ビルド、インストールしようとしても、何度やっても「Application Installation Failed」となってしまう問題に行き当たったので対策のメモです。
Intelli J IDEAでも遭遇するかもしれません。
Android Studio でRunボタンを押して、ビルド、エミュレータ・端末へのインストールが始まった後に、
こんなエラーに行き当たりました。
Application Installation Failed
Installation failed with message Failed to establish session.
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 applliation?
日本語訳:
「アプリケーションインストールに失敗しました。
セッションの確立に失敗したため、インストールできませんでした。
この問題は既にAPKが入っている場合、既存バージョンのAPKをアンインストール後、再インストールすることで解決する可能性があります。
警告:アンインストールすると、アプリケーションデータは消失します。
既存のアプリケーションをアンインストールしてもいいですか? (OK/キャンセル)」
このダイアログが出ても、書かれている通り大抵は「OK」でアプリアンインストール、再インストールすれば問題解消するのですが、
今回は何度やっても失敗になってしまいます。
ログを追ったりしていくと、
adb install-multiple -r "略/slice_1.apk" "略/slice_2.apk" "略/slice_3.apk" 以下略
という複数 apk をインストールするコマンドで、
Invalid APK file: app/build/intermediates/split-apk/debug/slices/slice_8.apk
と、一部ファイルが見つからないエラーになってしまうのが原因のようです。
(ちなみに、MultidexはOFFにしてます)
adb install ./app/build/outputs/apk/app-debug.apk
として、デバッグAPKを単体でインストールすると動作しているので、Instant Run 対応のために複数APKになっているのが原因のよう。
StackOverFlowの記事にあったとおり、Instant Run をオフにしたところ、ちゃんとインストールできるようになりました。
InstantRunをオフにするには、
Android Studio メニューから Preferences を開き、
Preferencesのサイドメニューから “Build, Execution, Deployment” の下の、”Instant Run”の画面で、
Enable Instant Run to hot swap code/resource changes on deploy(default enabled).
のチェックを外して、OKをクリックします。
InstantRunが使えなくなった原因は不明(Kotlinを使ってるせいか、何かしらライブラリが悪さしてるか)で、
ちょっと不便ですが、とりあえず動いているので、よしとします。