GameActivity Android Game Development Kit'in bir parçasıdır.
GameActivity
, Android oyunlarının uygulama döngüsü komutlarını, giriş etkinliklerini ve uygulamanın C/C++ kodundaki metin girişini işlemesine yardımcı olmak için tasarlanmış bir Jetpack kitaplığıdır. GameActivity
, NativeActivity
'nin doğrudan alt öğesidir ve benzer bir mimariye sahiptir:
Yukarıdaki şemada gösterildiği gibi, GameActivity
aşağıdaki işlevleri gerçekleştirir:
- Java tarafı bileşen aracılığıyla Android çerçevesiyle etkileşimde bulunma.
- Uygulama döngüsü komutlarını, giriş etkinliklerini ve giriş metnini yerel tarafa iletme.
- C/C++ kaynak kodunu üç mantıksal bileşene modelleme:
- GameActivity'nin Java işlevini doğrudan destekleyen ve etkinlikleri
native_app_glue
'ye ekleyen GameActivity'nin JNI işlevleri. native_app_glue
, çoğunlukla kendi yerel iş parçacığında (uygulamanın ana iş parçacığından farklı) çalışır ve görevleri looper'ıyla yürütür.- Uygulamanın oyun kodu. Bu kod,
native_app_glue
içinde sıraya eklenen etkinlikleri sorgulayarak işler venative_app_glue
iş parçacığında oyun kodunu yürütür.
- GameActivity'nin Java işlevini doğrudan destekleyen ve etkinlikleri
GameActivity
ile oyun geliştirmeye odaklanabilir ve JNI koduyla uğraşmak için çok fazla zaman harcamaktan kaçınabilirsiniz.
NativeActivity
ile ilgili bilginiz varsa GameActivity
ile NativeActivity
arasındaki temel farklar şunlardır:
GameActivity
,SurfaceView
olarak oluşturulur. Bu sayede oyunların diğer kullanıcı arayüzü bileşenleriyle etkileşimi çok daha kolay hale gelir.- Dokunma ve tuş girişi etkinlikleri için
GameActivity
,NativeActivity
'ın kullandığıInputQueue
'ten ayrı olarakandroid_input_buffer
arayüzüyle tamamen yeni bir uygulamaya sahiptir. GameActivity
, diğer Jetpack bileşenlerini sorunsuz bir şekilde kullanmanıza olanak tanıyanAppCompatActivity
sınıfından türetilmiş bir sınıftır.ActionBar
,Fragment
ve diğer tümGameActivity
, GameTextInput kitaplığını entegre ederek metin girişi işlevi ekler.GameActivity
'ten türetilen uygulamaların, C/C++ kodunun üç bölümünü de tek bir kitaplıkta oluşturması beklenir. Öte yandan,NativeActivity
'ın JNI işlevleri çerçevenin bir parçasıdır (her zaman OS tarafından yüklenir). Bu nedenle, yalnızcanative_app_glue
ve uygulamanın C/C++ kodunun tek bir kitaplıkta derlenmesi beklenir.NativeActivity
, Android çerçevesinin bir parçasıdır ve Android'in sürüm döngüsünü (genellikle yıllık) izler.GameActivity
, çok daha sık (genellikle iki haftada bir) sürüm döngüsü olan Jetpack kitaplığının bir parçasıdır. Bu nedenle, yeni özellikler ve hata düzeltmeleri çok daha hızlı yayınlanabilir.
Yayınlama konumları
GameActivity
kitaplığı aşağıdaki kanallarda kullanılabilir:
- Android Jetpack kitaplığının bir parçası olarak (önerilir)
- AOSP kaynak kodu olarak
C/C++ kodu, tüm sürüm kanallarında Prefab biçimi kullanılarak kaynak kod olarak sağlanır. GameActivity 1.2.2 sürümü, dağıtıma statik bir kitaplık ekler. Bu sürümden itibaren ve sonraki sürümlerde kaynak kod yerine statik kitaplığı kullanmanızı öneririz.
Jetpack kitaplığının ve AGDK zip paketinin içeriği
Jetpack kitaplığı ve AGDK zip paketi kanallarında GameActivity, AAR ile yayınlanır. Bu AAR aşağıdaki ana bileşenleri içerir:
- Java kodu için JAR dosyası
- C/C++ statik kitaplığı
game-activity_static
, GameActivity 1.2.2 ve sonraki sürümlere dahildir. - C/C++ kaynak kodu (
/prefab
klasörünün altında)
Bu sayfadan bağlantı verilen entegrasyon talimatlarında, Prefab'i derleme sisteminizde kullanabileceğiniz varsayılır. Aksi takdirde, prefab/modules/game-activity/include
klasörü altında paketlenmiş kaynak kodu derleme sisteminize kopyalayıp gerekli entegrasyon adımlarını uygulayabilirsiniz. Android Jetpack kitaplığının androidx
altındaki sürümler için benzer bir dosya yapısı vardır. Varsayılan olarak Gradle, AAR'ları önbelleğe alma dizininde (~/.gradle/caches/...) açar. prefab/modules/game-activity/include
ifadesini arayarak ve hedeflediğiniz sürümün altındaki konumu seçerek C/C++ kaynak kodunu bulabilirsiniz.
Jetpack kitaplığını kullanarak entegrasyon yapmayla ilgili talimatlar için GameActivity'yi kullanmaya başlama başlıklı makaleyi inceleyin.
AOSP kaynak kodunun içeriği
AOSP her zaman en son kaynak kodunu içerir. Kendi sürümlerinizi oluşturmak veya kaynağı doğrudan derleme ortamınıza entegre etmek için derleme talimatlarını uygulayın. C/C++ kaynak kodu, Jetpack kitaplığı ve AGDK zip paketine benzer bir dosya yapısına kaydedilir.
Entegrasyon kılavuzları
GameActivity
'ü uygulamalarınıza entegre etmek için aşağıdaki kılavuzları uygulayın:
Ek kaynaklar
GameActivity
hakkında daha fazla bilgi edinmek için aşağıdakileri inceleyin:
- GameActivity ve AGDK sürüm notları.
- GameActivity'de GameTextInput'i kullanın.
- NativeActivity taşıma rehberi.
- GameActivity referans dokümanları.
- GameActivity uygulaması.
Geri bildirim
GameActivity ile ilgili hataları bildirmek veya yeni özellikler istemek için GameActivity sorun izleyicisini kullanın.