Android Studio 3.5 Canary ajoute «Apply Changes», un remplacement Instant Run

Android Studio 3.5 (actuellement sur les canaux Canary et Dev) propose désormais un nouveau moyen de transmettre les modifications de code à votre application et de voir leurs effets à la volée sans avoir à redémarrer l'application. Surnommé simplement «Appliquer les modifications», il succède à la fonctionnalité «Exécution instantanée» des versions précédentes d'Android Studio.

Le blog des développeurs Android de Google indique ce qui suit à propos de l'application des modifications:

Appliquer les modifications vous permet de transmettre les modifications de code et de ressources à votre application en cours d'exécution sans redémarrer votre application et, dans certains cas, sans redémarrer l'activité en cours. Appliquer les modifications remplace Instant Run par une approche totalement nouvelle d'optimisation de la construction. Au lieu de réécrire le bytecode de votre APK en phase de construction, Apply Changes redéfinit les classes à la volée en utilisant l’instrumentation d’exécution prise en charge par Android 8.0 (API niveau 26) ou une version ultérieure.

De plus, Android Studio vous invite maintenant à décider de redémarrer votre application ou votre activité lorsqu'il détecte que les modifications ne sont pas compatibles avec Appliquer les modifications. Ce contrôle supplémentaire devrait vous fournir une expérience plus cohérente et prévisible par rapport au comportement d'Instant Run.

Le blog poursuit en énumérant quelques limitations à la nouvelle fonctionnalité. Par exemple, l'appareil sur lequel vous testez votre application doit au moins exécuter Android 8.0 Oreo (API de niveau 26) et certaines modifications de code nécessiteront toujours le redémarrage de votre application. Comme pour «Instant Run», «Apply Changes» appliquera le redémarrage de votre application si vous:

  • Ajouter ou supprimer une classe, une méthode ou un champ
  • Changer le manifeste
  • Changer les signatures de méthode
  • Changer les modificateurs de méthodes ou de classes
  • Renommer des classes
  • Changer l'héritage de classe
  • Ajouter ou supprimer une ressource

Dans l'article «Problèmes connus», l'article de blog indique que, puisque cette priorité a été privilégiée par la stabilité par rapport à la performance, «Appliquer les modifications» est parfois exécuté plus lentement que sa version précédente, «Instant Run». De plus, les images d'émulateur x86_x64 ne sont pas prises en charge. et aux fins de débogage, seul Android Pie (API niveau 28) est pris en charge. Vous pouvez voir la liste complète des limitations et des problèmes connus en cliquant sur le lien source ci-dessous.

Pour une description plus détaillée de la différence entre «Appliquer les modifications» et «Instant Run», un employé de Google de l'équipe Android Studio a déclaré ceci sur Reddit:

Il fait quelque chose de très, très différent. Instant Run a eu un impact très spécifique sur la construction, en instrumentant chacune de vos classes au moment de la compilation pour les préparer à être remplacées lors de l'exécution par une nouvelle version de la classe. Il divise également votre fichier APK en plusieurs fichiers APK pour re-télécharger votre application plus progressivement.

Appliquer les modifications ne fait rien de tel. Votre APK est très similaire, que vous utilisiez ou non l'application Appliquer les modifications. Au lieu de cela, il s'appuie sur les nouvelles fonctionnalités d'instrumentation d'exécution de la machine virtuelle ART pour recharger dynamiquement les classes et les remplacer pendant l'exécution de l'application. C'est pourquoi il nécessite des versions beaucoup plus récentes d'Android.

"Apply Changes" devrait éventuellement remplacer "Instant Run" dans les canaux bêta et stable, à mesure que Google améliore ses performances et sa stabilité.


Source: Blog des développeurs Android