Я начал использовать DarwinKit несколько лет назад, потому что не было привязок к собственным API-интерфейсам Mac для Go. Мы постепенно превратили проект в инструменты для привязок и генерации, чтобы когда-нибудь полностью охватить все API Apple. Выпуск версии 0.5.0 на прошлой неделе стал самым масштабным за всю историю проекта:
Вот краткий пример использования DarwinKit для создания собственного оконного приложения веб-просмотра за несколько строк 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 }) }) }
Менее чем за 40 строк мы создали нативное приложение для Mac, не открывая XCode и не используя Objective-C. Я думаю, что сейчас это может быть лучший проект привязок для API Apple. Возможно, даже лучший способ создавать небольшие утилиты на Mac. А вскоре и другие устройства Apple.
В DarwinKit есть один большой недостающий элемент: нет привязок к функциям Apple framework. К счастью, большинство фреймворков построены с использованием ООП, и на данный момент у нас есть отличные привязки. Но некоторые фреймворки, особенно фреймворки нижнего уровня, в основном представляют собой функции. Хотя существует обходной путь, который предполагает использование CGO (которого DarwinKit пытается помочь вам избежать), мы работаем над созданием собственных привязок функций Go для каждой функции платформы.
Еще одна важная вещь, над которой мы работаем, — это заставить DarwinKit вообще не использовать CGO! Используя purego, мы можем вызывать фреймворки Apple без использования CGO. Это улучшит время сборки, уменьшит размер двоичных файлов и позволит использовать DarwinKit в программах, которым по какой-либо причине необходимо избегать CGO.
Что касается разработчиков iOS и мобильных устройств, я действительно хочу, чтобы это работало для iOS. На самом деле, это уже должно быть! Но мы пока генерируем привязки для MacOS. Если кто-то хочет помочь перенести это на iOS, чтобы люди могли создавать мобильные приложения Apple с помощью Go, свяжитесь с нами!
А пока попробуйте создать приложение, используя то, что у нас есть на данный момент. Дайте мне знать, как идут дела!
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3