Chromium Chronicle n°28: premiers pas avec Chrome sur iOS

Épisode 28:par Mark Cogan à Paris, France (janvier 2022)
Épisodes précédents

En 2022, Chrome sur iOS fêtera son 10e anniversaire. Chrome est l'une des applications iOS les plus utilisées. C'est actuellement la deuxième application utilitaire de l'App Store aux États-Unis.

Chrome sur iOS offre toutes les fonctionnalités Chrome préférées de nos utilisateurs, y compris la synchronisation, la traduction, la navigation privée, le Gestionnaire de mots de passe, la saisie automatique et bien d'autres. Chrome sur iOS s'intègre également à des fonctionnalités iOS natives telles que le mode multifenêtre et la saisie automatique des mots de passe à l'échelle de l'appareil.

Cependant, un élément majeur rend Chrome sur iOS très différent des autres implémentations de la plate-forme Chrome.

Chrome sur iOS n'utilise pas Blink.

Conformément aux règles de l'App Store d'Apple, Chrome sur iOS doit utiliser les API de la plate-forme iOS pour récupérer et afficher le contenu Web. Chrome sur iOS utilise donc WebKit, Nitro et CFNetwork, alors que d'autres plates-formes Chrome utilisent Blink, V8 et //net. Par conséquent, et en raison de l'API limitée disponible pour permettre aux applications iOS d'interagir avec le contenu des pages Web, de nombreuses fonctionnalités Chrome qui utilisent les API //content sont implémentées dans Chrome sur iOS à l'aide de l'injection JavaScript.

Les fonctionnalités multiplates-formes de //components sont structurées de manière à partager autant de code que possible entre toutes les plates-formes, tout en cloisonnant les dépendances //content:

ls components/some_component

content/        # code with dependencies on //content.
core/           # cross-platform code with no //content dependencies.
ios/            # iOS implementation using JavaScript injection.

Voici d'autres différences importantes entre Chrome sur iOS et sur les autres plates-formes:

  • Les applications iOS doivent être à un seul processus. Par conséquent, Chrome sur iOS ne peut pas fork().
  • Chrome sur iOS est écrit en Objective-C++ (un mélange de C++ et Objective-C), et en Swift.
  • Bien que vous puissiez compiler et exécuter Chrome sur iOS directement sur un appareil iOS, vous pouvez également développer de nombreuses fonctionnalités dans le simulateur d'appareil très performant fourni par Apple.

Premiers pas avec Chrome sur iOS

Vous avez alors besoin de :

  • Un ordinateur macOS 64 bits exécutant macOS 11.3 ou une version ultérieure. Apple Silicon est compatible.
  • Xcode, l'IDE pour les plates-formes Apple, version 13.0 ou ultérieure.
  • Version actuelle du JDK.

Pour en savoir plus, consultez les instructions de création.

L'extraction de la source est semblable à celle des autres plates-formes:

mkdir ${HOME}/chromium-ios
cd ${HOME}/chromium-ios
fetch ios

Vous pouvez ensuite compiler à partir de la ligne de commande (ou de Xcode):

autoninja -C out/Debug-iphonesimulator chrome

En savoir plus sur le développement de fonctionnalités Chrome sur iOS

Nous vous invitons à consulter le guide de style Chromium. Consultez la documentation Apple destinée aux développeurs pour en savoir plus sur Swift, xCode et d'autres ressources spécifiques à iOS.

Si vous êtes généralement un développeur iOS et que vous débutez sur Chromium, consultez la documentation sur les abstractions et les structures de données importantes.