Android oyunları oluşturmak için Go kullanmak mümkün mü? Konu satırında belirtilen teknolojilere bağlı değilim. some people'un Go'da bazı Android programları oluşturduğunu biliyorum, ancak bunlar başsız olabilirler.Android oyunlarını Go ile NDK kullanarak ve/veya SWIG veya benzerleriyle oluşturmak mümkün mü?
cevap
Başsız uygulamalar istiyorsanız, önerim GUI için cgo kullanmak olacaktır. Bu kulağa tuhaf geliyor, ama NDK C android gui kütüphanelerini destekliyorsa, muhtemelen bu çağrıları kullanarak GUI yazmanın en kolay yolu olacaktır. Tabii ki, C'deki tüm mantığı yazmak zorunda değilsiniz. GUI çağrılarının her biri için sarmalayıcıları sadece cgo yapabilir ve her GUI çağrısının cgo ile çevrilmesi dışında GUI'yi yazabilirsiniz.
Hayır, şu anda mümkün değil. Git ve C programları, cgo ile birlikte çalışabilir. ancak bu durumda, Go programının programın C-tabanlı bölümüne kontrolden geçmeden önce çalışma zamanını başlatması ve başlatması gerekir.
Android'de NDK'yı kullanırken, C kodunuza Dalvik sanal makinesi dlopen aracılığıyla çağrılır. Bu yüzden, Git çalışma zamanı kendini başlatma şansına sahip olmaz.
C kodundan, başlangıç yapmak için Git seçeneğine çağrı yapılamadı mı? – kristianp
Evet, prensipte ... "domuzlar yeterli kinetik enerjiye sahiplerse uçabilirler" gibi. Ama Go ve cgo'nun bugün çalışma şekli, hayır. Mevcut uygulamanın temel bir sınırı, yürütülebilir dosyanın ELF başlığının Go derleyici tarafından yapılması ve Go's init koduna işaret etmesi gerektiğidir. Bir kez bittiğinde, Go, C kodunu çağırırken C stili bir yığın oluşturabilir ve ona geçiş yapabilir. –
Güzel benzetme :) – kristianp
Git/cgo/Java, bu şekilde birlikte çalışamaz. –
Java kullanımını önermiyorum. NDK, android cihazlarda yerel C desteğini destekler - Java dahil değildir. Benim düşüncem, eğer NDK kullanarak C sistemindeki android sistem-bitlerini yazabilseydiniz, daha sonra cgo – joshlf
'u kullanarak bağlantı kurabilirsiniz. Uygulama yaşam döngüsünü anlamanız, uygulamanızın sürecinin dalvik zygote'un çatallı bir kopyası olduğunu ve UID/gid ayarınız doğru olduğunda, Android'den uygulamanıza Java çağırma sözleşmeleri aracılığıyla bir kontrol devri var. Yapmak istediğiniz ilk şey, kontrolü NDK tarafından derlenen C koduna teslim etmektir. Ancak Go'nun çalışma zamanı, adres alanında zaten çalışan Dalvik'in yokluğunda kendisini başlatmak istiyor. –