"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف أقوم بإنشاء تطبيقات Mac بسيطة باستخدام Go

كيف أقوم بإنشاء تطبيقات Mac بسيطة باستخدام Go

تم النشر بتاريخ 2024-07-29
تصفح:133

لقد بدأت DarwinKit منذ بضع سنوات لأنه لم تكن هناك روابط لواجهات برمجة تطبيقات Mac الأصلية لـ Go. لقد قمنا بتحويل المشروع ببطء إلى أدوات ربط وإنشاء للوصول في يوم من الأيام إلى التغطية الكاملة لجميع واجهات برمجة تطبيقات Apple. يعد إصدار الإصدار 0.5.0 الأسبوع الماضي هو الأكبر الذي شهده المشروع:

  • ارتباطات لـ 33 إطارًا بتغطية شبه كاملة:
    • 2,353 فصول
    • 23,822 الطرق والخصائص
    • 9,519 الثوابت/التعدادات
    • 543 الهياكل
  • التحويل التلقائي واستخدام أنواع Go الأصلية المضمنة في واجهات برمجة التطبيقات
  • دعم وسيطات الكتلة حيث تعمل Go مع الوسائط المكتوبة بشكل صحيح
  • تطبيقات المفوض المعدة مسبقًا يمكنك ببساطة تعيين وظائف Go عليها
  • تعيين 1 إلى 1 لرموز Objective-C بينما لا يزال اصطلاحيًا لـ Go
  • وثائق لجميع الرموز بما في ذلك رابط لمستندات Apple الرسمية على هذا الرمز
  • مجموعة متزايدة من الأمثلة على التطبيقات المبدئية عالية الجودة للجهات الراعية

Demo Screenshots

إليك مثال سريع لاستخدام 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، فيرجى التواصل معنا!

حتى ذلك الحين، حاول إنشاء تطبيق باستخدام ما لدينا حتى الآن. أعلمني كيف سيسير الامر!

بيان الافراج هذه المقالة مستنسخة على: https://dev.to/progrium/how-i-build-simple-mac-apps-using-go-104j?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] للحذف هو - هي
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3