"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment créer des applications Mac simples à l'aide de Go

Comment créer des applications Mac simples à l'aide de Go

Publié le 2024-07-29
Parcourir:805

J'ai lancé DarwinKit il y a quelques années car il n'y avait aucune liaison avec les API Mac natives pour Go. Nous avons lentement transformé le projet en outils de liaison et de génération pour atteindre un jour une couverture complète de toutes les API Apple. La sortie de la v0.5.0 la semaine dernière est la plus importante que le projet ait jamais connue :

  • Liaisons pour 33 frameworks avec une couverture presque complète :
    • 2 353 cours
    • 23 822 méthodes et propriétés
    • 9 519 constantes/énumérations
    • 543 structures
  • Conversion automatique et utilisation des types natifs intégrés Go dans les API
  • Prise en charge des arguments de bloc en tant que fonctions Go avec des arguments correctement saisis
  • Implémentations de délégués prédéfinies sur lesquelles vous pouvez simplement définir les fonctions Go
  • Mappage 1-à-1 avec les symboles Objective-C tout en restant idiomatique avec Go
  • Documentation pour tous les symboles, y compris un lien vers la documentation Apple officielle sur ce symbole
  • Collection croissante d'exemples d'applications de démarrage de haute qualité pour les sponsors

Demo Screenshots

Voici un exemple rapide utilisant DarwinKit pour créer une application native de fenêtre d'affichage Web en quelques lignes de Go :

package main

import (
    "github.com/progrium/darwinkit/objc"
    "github.com/progrium/darwinkit/macos"
    "github.com/progrium/darwinkit/macos/appkit"
    "github.com/progrium/darwinkit/macos/foundation"
    "github.com/progrium/darwinkit/macos/webkit"
)

func main() {
    // runs macOS application event loop with a callback on success
    macos.RunApp(func(app appkit.Application, delegate *appkit.ApplicationDelegate) {
        app.SetActivationPolicy(appkit.ApplicationActivationPolicyRegular)
        app.ActivateIgnoringOtherApps(true)

        url := foundation.URL_URLWithString("https://github.com/sponsors/darwinkitdev")
        req := foundation.NewURLRequestWithURL(url)
        frame := foundation.Rect{Size: foundation.Size{1440, 900}}

        config := webkit.NewWebViewConfiguration()
        wv := webkit.NewWebViewWithFrameConfiguration(frame, config)
        wv.LoadRequest(req)

        w := appkit.NewWindowWithContentRectStyleMaskBackingDefer(frame,
            appkit.ClosableWindowMask|appkit.TitledWindowMask,
            appkit.BackingStoreBuffered, false)
        objc.Retain(&w)
        w.SetContentView(wv)
        w.MakeKeyAndOrderFront(w)
        w.Center()

        delegate.SetApplicationShouldTerminateAfterLastWindowClosed(func(appkit.Application) bool {
            return true
        })
    })
}

En moins de 40 lignes, nous avons créé une application Mac native sans ouvrir XCode ni utiliser Objective-C. Je pense que cela pourrait désormais être le meilleur projet de liaison existant pour les API Apple. Peut-être même le meilleur moyen de créer de petits utilitaires sur Mac. Et bientôt même d'autres appareils Apple.

L'avenir

Il manque une grande pièce à DarwinKit : il n'y a aucune liaison avec le framework Apple fonctions. Heureusement, la plupart des frameworks sont construits avec la POO, pour laquelle nous disposons d'excellentes liaisons pour le moment. Mais certains frameworks, notamment les frameworks de niveau inférieur, sont pour la plupart des fonctions. Bien qu'il existe une solution de contournement qui implique l'utilisation de CGO (que DarwinKit essaie de vous aider à éviter), nous travaillons sur la génération de liaisons de fonctions Go natives pour chaque fonction du framework.

L'autre grand objectif sur lequel nous travaillons est de faire en sorte que DarwinKit n'utilise pas du tout CGO ! En utilisant purego, nous pouvons faire appel aux frameworks Apple sans impliquer CGO. Cela améliorera le temps de construction, créera des binaires plus petits et permettra à DarwinKit d'être utilisé dans des programmes qui doivent éviter CGO pour une raison quelconque.

Pour les développeurs iOS et mobiles, je veux vraiment que cela fonctionne pour iOS. En fait, cela devrait déjà être le cas ! Mais nous générons des liaisons pour MacOS pour l'instant. Si quelqu'un souhaite nous aider à intégrer cela sur iOS pour permettre aux utilisateurs de créer des applications mobiles Apple avec Go, n'hésitez pas à nous contacter !

En attendant, essayez de créer une application avec ce que nous avons jusqu'à présent. Faites-moi savoir comment ça se passe !

Déclaration de sortie Cet article est reproduit sur : https://dev.to/progrium/how-i-build-simple-mac-apps-using-go-104j?1 En cas de violation, veuillez contacter [email protected] pour supprimer il
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3