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 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 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 hebt nodig:

  • 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 .