لقد بدأت DarwinKit منذ بضع سنوات لأنه لم تكن هناك روابط لواجهات برمجة تطبيقات Mac الأصلية لـ Go. لقد قمنا بتحويل المشروع ببطء إلى أدوات ربط وإنشاء للوصول في يوم من الأيام إلى التغطية الكاملة لجميع واجهات برمجة تطبيقات 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. أعتقد أن هذا قد يكون الآن أفضل مشروع ربط موجود لواجهات برمجة تطبيقات Apple. ربما تكون أفضل طريقة لإنشاء أدوات مساعدة صغيرة على جهاز Mac. وقريباً أجهزة أبل الأخرى.
هناك قطعة كبيرة مفقودة في DarwinKit: لا توجد روابط لإطار عمل Apple وظائف. لحسن الحظ، معظم الأطر مبنية باستخدام OOP، والتي لدينا ارتباطات رائعة في الوقت الحالي. لكن بعض الأطر، وخاصة أطر المستوى الأدنى، هي في الغالب وظائف. على الرغم من وجود حل بديل يتضمن استخدام CGO (والذي تحاول DarwinKit مساعدتك على تجنبه)، فإننا نعمل على إنشاء روابط دالة Go الأصلية لكل وظيفة إطار عمل.
الشيء المهم الآخر الذي نعمل على تحقيقه هو جعل DarwinKit لا يستخدم CGO على الإطلاق! باستخدام purego، يمكننا الاتصال بأطر عمل Apple دون إشراك CGO. سيؤدي هذا إلى تحسين وقت البناء، وإنشاء ثنائيات أصغر، والسماح باستخدام DarwinKit في البرامج التي تحتاج إلى تجنب CGO لأي سبب من الأسباب.
بالنسبة إلى مطوري iOS والأجهزة المحمولة، أريد حقًا تشغيل هذا لنظام iOS. في الواقع، ينبغي بالفعل! لكننا نقوم بإنشاء روابط لنظام التشغيل MacOS في الوقت الحالي. إذا أراد أي شخص المساعدة في جلب هذا إلى iOS للسماح للأشخاص بإنشاء تطبيقات Apple للهواتف المحمولة باستخدام Go، فيرجى التواصل معنا!
حتى ذلك الحين، حاول إنشاء تطبيق باستخدام ما لدينا حتى الآن. أعلمني كيف سيسير الامر!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3