2012-07-05 12 views

cevap

-1

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.

+0

Git/cgo/Java, bu şekilde birlikte çalışamaz. –

+0

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

+0

'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. –

1

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.

+0

C kodundan, başlangıç ​​yapmak için Git seçeneğine çağrı yapılamadı mı? – kristianp

+0

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. –

+0

Güzel benzetme :) – kristianp

İlgili konular