はじめに
ApplyChanges(AndroidStudio3.3以前はInstantRun)は非常に便利な機能です。
使いこなすことでAndroidの開発速度を向上させることが出来ます。
しかし、もともとあまりInstantRunが使われていなかったプロジェクトではいきなり動かしてもきちんと動いてくれないことがあります。
現象
ApplyChanges(InstantRun)でアプリをビルドすると
Instant Run applied code changes and restarted the app.The app was restarted since it uses multiple processes.
というメッセージが表示されて、アプリが再起動される。Activity単位のホットスワップが出来ない。
解決方法
ホットスワップが出来ない原因はメッセージに書いている通りです。
ApplyChanges(InstantRun)は複数プロセスが動くアプリに対応していないので、AndroidManifestからandroid:process
を定義しているserviceを全て削除することでうまく動くようになります。
この複数プロセスというのは依存しているライブラリも含むので、マージ後のAndroidManifestも確認する必要があります。
おわりに
今回問題の発生したプロジェクトではこれでうまくホットスワップが使えるようになりました。
最初から英文を読めばすぐに解決していた感じですが、メッセージの表示が「問題がなかった」感の強い緑色のトーストで表示されていたために、アレ?となってしまいました。
また、本文とはあまり関係がないのですが、AndroidStudio3.4がリリースされ、ApplyChangesが使えるようになりました。
不安定だったInstantRunを色々改良したもののようです。
InstantRunが不安定で忌避していた方も、もう一度試してみてはいかがでしょうか?
参考