Android Studio 3.5 では、人気のあるアプリ開発ツールの Instant Run 機能の後継となる、Apply Changes が導入されています。
Android Studio 3.5 (現在は Canary チャネルと Dev チャネルにあります) には、コードの変更をアプリにプッシュし、アプリを再起動せずにその場でその効果を確認する新しい方法が追加されました。 単に「変更の適用」と呼ばれるこの機能は、以前のバージョンの「インスタント実行」機能の後継です。 Androidスタジオ.
Googleの Android 開発者ブログ 変更の適用について次のように述べています。
変更の適用を使用すると、アプリを再起動せずに、場合によっては現在のアクティビティを再起動せずに、実行中のアプリにコードとリソースの変更をプッシュできます。 [Apply Changes] は、Instant Run をビルド最適化のためのまったく新しいアプローチに置き換えます。 ビルド時に APK のバイトコードを書き換えるのではなく、Apply Changes は、Android 8.0 (API レベル 26) 以降でサポートされているランタイム インストルメンテーションを利用して、その場でクラスを再定義します。
さらに、Android Studio では、変更が [Apply Changes] と互換性がないことが検出された場合に、アプリまたはアクティビティを再起動するかどうかを決定するよう求められるようになりました。 この追加のコントロールにより、Instant Run の動作と比較して、より一貫性があり、予測可能なエクスペリエンスが提供されます。
このブログ投稿では、新機能に対するいくつかの制限を列挙しています。 たとえば、アプリをテストしているデバイスは少なくとも実行されている必要があります。 Android 8.0 Oreo (API レベル 26) また、特定のコード変更ではアプリの再起動が必要になります。 「インスタント実行」と同様に、「変更を適用」は、次の場合にアプリを強制的に再起動します。
- クラス、メソッド、またはフィールドの追加または削除
- マニフェストの変更
- メソッドのシグネチャの変更
- メソッドまたはクラスの修飾子の変更
- クラス名の変更
- クラス継承の変更
- リソースの追加または削除
このブログ投稿の「既知の問題」では、Google は当初、この新機能ではパフォーマンスよりも安定性を優先していたため、「変更の適用」が実行される場合があると述べています。 以前の機能「Instant Run」よりも低速です。 また、x86_x64 エミュレータ イメージはサポートされておらず、デバッグ目的では Android Pie (API レベル 28) のみがサポートされています。 サポートされました。 制限事項と既知の問題の完全なリストは、以下のソース リンクで確認できます。
「Apply Changes」と「Instant Run」の違いの詳細については、Android Studio チームの Google 従業員が次のように語っています。 レディット:
それは非常に非常に異なることを行います。 Instant Run はビルドに非常に具体的な影響を与え、コンパイル時に各クラスをインストルメント化して、実行時に新しいバージョンのクラスに置き換えられるように準備しました。 また、APK を複数の APK に分割して、アプリをより段階的に再アップロードします。
「Apply Changes」はこれに似たものはありません。 変更の適用を使用するかどうかにかかわらず、APK はほとんど同じです。 代わりに、ART VM の新しいランタイム インストルメンテーション機能に依存して、アプリの実行中にクラスを動的にリロードして置き換えます。 これが、はるかに新しいバージョンの Android を必要とする理由です。
Google がパフォーマンスと安定性を改善するにつれて、「Apply Changes」は最終的にベータ版および安定版チャンネルの「Instant Run」に取って代わることが期待されています。
出典: Android 開発者ブログ