>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Go

iOS-ontwikkeling Zonder MacBook met de Builder Utility

Iedereen die heeft geprobeerd mobiele apps te schrijven in Flutter of React Native terwijl hij op Linux of Windows zit, stuit onvermijdelijk op Apple's hardwaremuur. Bouwen voor Android kost lokaal een paar minuten, maar iOS vereist altijd een Mac met Xcode. Een Mac mini kopen alleen om twee keer per week een testartefact te bouwen ziet eruit als een twijfelachtige investitie, vooral voor hobbyprojecten of kleine teams.

Onlangs stuitte ik op de ios-builder repository van het MobAI-team. Het is een kleine Go-utility die de routine afhandelt: activeert een build in GitHub Actions cloud, download het klaarstaande IPA-bestand, en verbindt het lokale ontwikkelproces met een echte iPhone.

Builder Demo

Hoe Het Van Binnen Werkt

Het idee is voor de hand liggend, maar hier hebben ze het omgezet in een kant-en-klare CLI-tool. In plaats van handmatig complexe pipelines te configureren, installeer je de builder utility, die een workflow-bestand voor GitHub Actions genereert.

De workflow ziet er zo uit:

  1. Je voert het build-commando uit in de terminal.
  2. De CLI pusht de code naar je repository en start een GitHub Actions runner op macOS.
  3. Xcode in de cloud compileert het project en verpakt het artefact.
  4. De utility download het klaarstaande IPA naar de lokale ./dist/ folder.

Dit betekent dat je geen Mac hoeft te kopen—je gebruikt de gratis CI-minuten van GitHub. Gratis accounts hebben echter een x10 vermenigvuldiger voor macOS. Van de 20.000 gratis minuten per maand op Mac-runners houd je ongeveer 2.000 minuten over. Dat is roughly 15-20 builds. Dat is genoeg voor releases en periodieke tests, maar je kunt niet op elke commit CI draaien.

Wat de Utility Kan Doen

Het gereedschap is ontworpen om te werken met populaire cross-platform stacks en native projecten.

  • Automatische projectstructuurdetectie. De utility begrijpt Flutter, plain React Native, geëxporteerde Expo, Cordova/Ionic, en native Swift-projecten.
  • Code signing-beheer. Je kunt certificaten en provisioning profiles rechtstreeks uploaden naar GitHub secrets via het builder signing setup commando.
  • Hot Reload. Het meest nuttige deel voor degenen die schrijven in Flutter of React Native.
  • Uitvoeren op een remote simulator. Via de MobAI-service kun je de gebouwde app in een simulator testen rechtstreeks vanuit je browser of desktop-client, hoewel deze optie een Pro-abonnement vereist.

Setup en Eerste Uitvoering

Installatie is eenvoudig. Op Windows kun je een kant-en-klaar binary downloaden van de releases pagina, en op Linux, WSL, of macOS voer je het commando uit via terminal:

curl -sSL https://raw.githubusercontent.com/MobAI-App/ios-builder/main/install.sh | bash

Of bouw vanaf de broncode als je al Go op je machine hebt:

git clone https://github.com/MobAI-App/ios-builder.git
cd ios-builder
go build -o builder ./cmd/builder

Na installatie moet je autoriseren met GitHub en het project initialiseren in de repository-root:

builder auth github
cd your-ios-project
builder init

Het builder init commando in interactieve modus maakt een configuratiebestand .github/workflows/ios-build.yml en een lokale builder.json.

Voorbeeld builder.json inhoud:

{
  "project": "MyApp",
  "platform": "ios",
  "github": {
    "owner": "username",
    "repo": "my-ios-app"
  },
  "ios": {
    "path": "ios",
    "scheme": "",
    "signing": true
  },
  "mobai": {
    "url": "http://localhost:8686",
    "device_id": ""
  },
  "flutter": {
    "watch": {
      "dirs": ["lib"],
      "patterns": [".dart"],
      "ignore": [".g.dart", ".freezed.dart"],
      "debounce": 100
    }
  }
}

Een build wordt gestart met één regel:

builder ios build

Als Apple Developer-certificaten nog niet zijn ingesteld, kun je een niet-ondertekende build bouwen met de --unsigned vlag.

Ontwikkeling met Hot Reload Zonder macOS

Een IPA-bestand bouwen is slechts de helft van de strijd. De echte pijn begint wanneer je snel de UI en logica moet repareren. Het project opnieuw bouwen in CI voor elke knopverandering is zinloos omdat de build enkele minuten duurt.

De ontwikkelaars hebben dit probleem opgelost door te integreren met hun MobAI-app, die een fysieke iPhone via USB met je computer verbindt.

De Flutter-workflow ziet er zo uit:

  1. Je verbindt je iPhone met je Windows- of Linux-pc via kabel.
  2. Je bouwt de basis IPA via builder ios build en installeert deze op het apparaat.
  3. Je start de ontwikkelingsmodus:
builder dev flutter

De utility start een file watcher in de lib/ directory. Wanneer je Dart-code wijzigt en het bestand opslaat, stuurt builder een Hot Reload-signaal via flutter attach. Gegenereerde bestanden zoals .freezed.dart en .g.dart worden genegeerd om onnodige herlaadbeurten te voorkomen.

Je hoeft de hele app alleen opnieuw te bouwen via de cloud wanneer je native code aanraakt: het wijzigen van Podfile, het toevoegen van plugins met complexe native afhankelijkheden, of het bewerken van Swift-bestanden.

Voor React Native is het proces vrijwel hetzelfde:

builder dev rn

Het commando start een lokale Metro-server, stuurt de juiste poort door, en verbindt de bundler met de app die op de telefoon draait. Als je binnen WSL2 werkt, moet je externe verbindingen toestaan in de MobAI-instellingen en het netwerkadres van de host-Windows-machine opgeven.

Valkuilen

Het gereedschap ziet er aantrekkelijk uit, maar er zijn verschillende praktische vragen over:

Bij het opnieuw ondertekenen van de app ter plekke via een gratis Apple ID-account verandert de Bundle ID (een team-achtervoegsel wordt toegevoegd). Dit kan pushmeldingen of Sign in with Apple breken als ze zijn gekoppeld aan een specifieke identifier.

Afhankelijkheid van de externe MobAI-utility. De CLI builder zelf wordt gedistribueerd onder de gratis MIT-licentie en is transparant geschreven. Echter, een deel van de functionaliteit (installeren op apparaten, simulators) is afhankelijk van de proprietaire MobAI-app, waar sommige functies betaald zijn.

GitHub Actions-limieten. Als je in een actieve fase van native UI-layout zonder frameworks werkt, raken de gratis minuten op runners snel op.

Is Het de Moeite Waard om Te Proberen

Als je schrijft in Flutter of React Native op Windows/Linux en af en toe de app moet testen op een echte iPhone of een testversie voor een klant moet bouwen, zal ios-builder veel tijd en zenuwen besparen. Het elimineert de noodzaak om handmatig YAML-bestanden voor GitHub Actions te schrijven en artefactdownloads te configureren.

Voor grote projecten met strikte certificaatbeveiligingsvereisten en complexe CI/CD-pipelines heb je nog steeds een dedicated Mac nodig. Maar voor indie ontwikkelaars en kleine teams is het een handige workaround.

Gerelateerde projecten