De Chromium Chronicle #28: Aan de slag met Chrome op iOS

Aflevering 28: door Mark Cogan in Parijs, Frankrijk (januari 2022)
Vorige afleveringen

In 2022 viert Chrome op iOS zijn 10e verjaardag. Chrome is een van de meest gebruikte iOS-apps; het is momenteel de nummer 2 Utility-app in de Amerikaanse App Store.

Chrome op iOS biedt alle geweldige Chrome-functies waar onze gebruikers dol op zijn, waaronder synchronisatie, vertalen, incognito, wachtwoordbeheer, automatisch aanvullen en nog veel meer. Chrome op iOS kan ook worden geïntegreerd met native iOS-functies, zoals het automatisch invullen van wachtwoorden in meerdere vensters en op het hele apparaat.

Er is echter één belangrijk ding dat Chrome op iOS heel anders maakt dan alle andere Chrome-platformimplementaties.

Chrome op iOS gebruikt Blink niet.

Vanwege de App Store-regels van Apple moet Chrome op iOS de iOS-platform-API's gebruiken voor het ophalen en weergeven van webinhoud. Chrome op iOS gebruikt dus WebKit, Nitro en CFNetwork, terwijl andere Chrome-platforms Blink, V8 en //net gebruiken. Als gevolg hiervan en vanwege de beperkte API die beschikbaar is voor iOS-apps om te communiceren met de inhoud van webpagina's, worden veel Chrome-functies die de //content API's gebruiken, in Chrome op iOS geïmplementeerd met behulp van JavaScript-injectie.

Platformonafhankelijke functies in //components zijn zo gestructureerd dat ze zoveel mogelijk code op alle platforms delen, terwijl //content inhoudsafhankelijkheden in silo's blijven:

ls components/some_component

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

Andere belangrijke verschillen tussen Chrome op iOS en andere platforms zijn:

  • iOS-apps moeten uit één proces bestaan, dus Chrome op iOS kan niet fork() .
  • Chrome op iOS is geschreven in Objective-C++ (een mix van C++ en Objective-C), samen met wat Swift.
  • Hoewel je Chrome op iOS rechtstreeks op een iOS-apparaat kunt compileren en uitvoeren, kun je ook veel functies ontwikkelen in de behoorlijk capabele apparaatsimulator die Apple biedt.

Ga aan de slag met Chrome op iOS

Je zal nodig hebben:

  • Een macOS-computer, 64-bit, met macOS 11.3 of hoger. Apple Silicon wordt ondersteund.
  • Xcode, de IDE voor Apple-platforms, versie 13.0 of hoger.
  • De huidige versie van de JDK.

Zie de bouwinstructies voor meer informatie.

Het ophalen van de bron lijkt veel op andere platforms:

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

Daarna kunt u bouwen vanaf de opdrachtregel (of vanuit Xcode):

autoninja -C out/Debug-iphonesimulator chrome

Meer informatie over de ontwikkeling van Chrome op iOS-functies

We raden u aan de Chromium-stijlgids te raadplegen. Lees de ontwikkelaarsdocumentatie van Apple voor meer informatie over Swift, xCode en andere iOS-specifieke bronnen.

Als je doorgaans een iOS-ontwikkelaar bent en nieuw bij Chromium, raadpleeg dan de documentatie over belangrijke abstracties en datastructuren .