Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara saya membina apl Mac mudah menggunakan Go

Cara saya membina apl Mac mudah menggunakan Go

WBOY
WBOYasal
2024-07-17 21:12:01781semak imbas

Saya memulakan DarwinKit beberapa tahun yang lalu kerana tiada pengikatan pada API Mac asli untuk Go. Kami perlahan-lahan mengubah projek itu menjadi alat pengikat dan penjanaan untuk suatu hari nanti mencapai liputan penuh semua API Apple. Keluaran v0.5.0 minggu lepas adalah projek terbesar yang pernah dilihat:

  • Pengikatan untuk 33 rangka kerja dengan liputan hampir lengkap:
    • 2,353 kelas
    • 23,822 kaedah dan sifat
    • 9,519 pemalar/enum
    • 543 struktur
  • Penukaran automatik dan penggunaan jenis terbina Go asli dalam API
  • Sokongan untuk hujah sekat sebagai Go berfungsi dengan hujah yang ditaip dengan betul
  • Pelaksanaan perwakilan yang telah dibuat, anda boleh tetapkan fungsi Go pada
  • Pemetaan 1-ke-1 ke simbol Objektif-C sementara masih idiomatik untuk Pergi
  • Dokumentasi untuk semua simbol termasuk pautan ke dokumen Apple rasmi pada simbol itu
  • Koleksi apl pemula contoh berkualiti tinggi yang semakin meningkat untuk penaja

Demo Screenshots

Berikut ialah contoh pantas menggunakan DarwinKit untuk membina aplikasi tetingkap paparan web asli dalam beberapa baris 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
        })
    })
}

Dalam kurang daripada 40 baris kami membuat apl Mac asli tanpa membuka XCode atau menggunakan Objective-C. Saya fikir ini kini mungkin projek pengikatan terbaik yang wujud untuk API Apple. Mungkin juga cara terbaik untuk membuat utiliti kecil pada Mac. Dan tidak lama lagi peranti Apple yang lain.

Masa Depan

Terdapat satu bahagian besar yang hilang pada DarwinKit: tiada pengikatan pada rangka kerja Apple fungsi. Nasib baik, kebanyakan rangka kerja dibina dengan OOP, yang kami mempunyai pengikatan yang hebat buat masa ini. Tetapi sesetengah rangka kerja, terutamanya rangka kerja peringkat rendah, kebanyakannya adalah fungsi. Walaupun terdapat penyelesaian yang melibatkan penggunaan CGO (yang DarwinKit cuba bantu anda elakkan), kami sedang berusaha untuk menjana pengikatan fungsi Go asli untuk setiap fungsi rangka kerja.

Perkara besar lain yang kami usahakan ialah menjadikan DarwinKit tidak menggunakan CGO langsung! Menggunakan purego, kami boleh memanggil rangka kerja Apple tanpa melibatkan CGO. Ini akan meningkatkan masa binaan, membuat binari yang lebih kecil dan membenarkan DarwinKit digunakan dalam program yang perlu mengelakkan CGO atas apa jua sebab.

Untuk iOS dan pembangun mudah alih di luar sana, saya benar-benar mahu menjadikan ini berfungsi untuk iOS. Malah, ia sudah sepatutnya! Tetapi kami menjana pengikatan untuk MacOS buat masa ini. Jika sesiapa ingin membantu membawa ini ke iOS untuk membenarkan orang ramai membuat apl mudah alih Apple dengan Go, sila hubungi!

Sehingga itu, cuba bina apl menggunakan apa yang kami ada setakat ini. Beritahu saya bagaimana ia berlaku!

Atas ialah kandungan terperinci Cara saya membina apl Mac mudah menggunakan Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn