7

私のAndroidアプリでは、インスタントランを有効にしてデバッグしています。

アプリで予期しないエラーが頻繁に発生しますが、クリーン ビルドを行うと解決されます。

たとえば、クラスが実際に存在する場合に、クラスが見つからないという例外が発生することがあります。Viewまた、返された byをターゲット タイプにキャストしようとすると、クラス キャスト例外が発生する場合がありますfindViewById()(おそらく、レイアウトのホット デプロイ時に Android Studio が要素 ID を誤って解釈した可能性があります)。

これらのエラーはすべて、フル ビルドを実行するだけで、コードを変更することなく解決されます。Instant Run は、ビルド プロセスを 2 倍または 3 倍遅くすることに成功しました。

これらのエラーが発生するのはなぜですか? すぐに実行して適切に動作させる方法を知っている人はいますか?

4

4 に答える 4

6

あなただけではありません。現在、Instant Run はほとんど安定していないか、信頼性が低いと言えます。

Instant Run には、このドキュメントで説明されているように、いくつかのスワップ ステップがあります。あなたの場合、Instant Run は変更をうまく認識できなかったので、コールド スワップが必要な場合でもウォーム スワップを行いました。

Instant Run は、マイナーな GUI 配置を編集する場合に便利です。現在のところこれが唯一の有用なシナリオであると言いたいので、一般的な開発中はオフにすることをお勧めします。チェックボックスのチェックを外すことで無効にすることができSettings > Build, Execution, Deployment > Enable Instant Run to hot swap...ます。

Instant Run が派手で、それでも使いたいと思っている場合、このような問題に何度も直面する可能性があります。そのためには、経験したようにすべてを再構築してください。今できることはそれだけです。

于 2016-06-24T02:19:01.690 に答える
3

Instant Run はまだバグだらけです。グーグルでさえ次のように言っています。

Instant Run は、ほとんどの状況でビルドとデプロイのプロセスを高速化するように設計されています。ただし、Instant Run の使用には、その動作やアプリとの互換性に影響を与える可能性のある側面がいくつかあります。Instant Run の使用中にその他の問題が発生した場合は、バグを報告してください

ビルドとデプロイのプロセスを高速化するために、いくつかの dex ファイルをアプリに追加します。レイアウトを変更してからプロジェクトをビルドして実行すると、古いレイアウトが表示されることがあります。それによって生成されるapkでさえ、一部のデバイスでは実行されません。

今のところ、オフにしたほうがよいでしょう:

Instant Run を無効にするには:

  1. 設定または環境設定ダイアログを開きます。
  2. ビルド、実行、デプロイ > インスタント実行に移動します。
  3. [Instant Run を有効にする] の横にあるボックスのチェックを外します。
于 2016-06-24T06:21:06.843 に答える
1

これはInstant Runに関するドキュメントです:

  1. Android Studio は、クリーン ビルドをかつてないほど迅速にデプロイできるようになりました。さらに、増分コード変更をエミュレーターまたは物理デバイスにプッシュすることは、ほぼ瞬時に行われるようになりました。新しいデバッグ ビルドを再デプロイしたり、多くの場合、アプリを再起動したりせずに、更新を確認します。
  2. Instant Run は、実行中のアプリへの次の変更のプッシュをサポートしています。
    • 既存のインスタンス メソッドまたは静的メソッドの実装に対する変更
    • 既存のアプリ リソースへの変更
    • メソッド シグネチャや静的フィールドなどの構造コードへの変更 (API レベル 21 以降を実行しているターゲット デバイスが必要)。

したがって、新しいクラスを追加するか、新しいview_idを追加するときは、プロジェクトをクリーンアップして再構築する必要があると思います。これはあくまで私の意見です、間違っていたらごめんなさい。 Instant Run に関する詳細情報

于 2016-06-24T03:08:28.030 に答える
0

ファイルを変更するとAndroidManifest.xml、Android Studio は完全なビルドを実行しますが、最初にクリーニングしてからプロジェクトをビルドする方がはるかに高速です。

そのため、Android Studio でプロジェクトを完全にビルドするときはいつでも、マニフェスト ファイルに空白行を追加します。これは、手動でフル ビルドを実行する場合に非常に効果的です。

于 2016-09-05T10:58:27.413 に答える