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 :
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.
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 !
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