Android Oyun Geliştirme Uzantısı örnekleri, uzantının temel özelliklerinin nasıl kullanılacağını gösterir. Bu konuda, örnekler ve bunları çalıştırmak için gereken ayarlar açıklanmaktadır.
Aşağıdaki örnekler indirme sayfasında mevcuttur:
- HelloJNI: Tanıtım projesi.
- Sonsuz Tünel: Android'e özel bir proje.
- Çaydanlık: Windows ve Android için platformlar arası bir proje.
- AssemblyCode-Link-Objects: Derleme kaynak koduna sahip bir şablon projesi.
Başlamadan önce
Android Oyun Geliştirme Uzantısı'nı ve örnekleri yükleyin. Ayrıntılar için hızlı başlangıç kılavuzunu inceleyin. Konuda örnek oluşturma ve çalıştırma işlemleri açıklanmakta ve örnek olarak Teapot örneğinin Android sürümünün kullanımı ele alınmaktadır.
Proje yapılandırma kılavuzu, uzantıyı kullanan bir proje için ayarların nasıl yapılandırılacağını (ör. Android platformu ve APK ekleme) açıklar.
HelloJNI
HelloJNI örneği, uygulama penceresinde "Hello From JNI" mesajı gösteren basit bir projedir. Projede Windows ve Android için farklı bir kaynak kodu grubu kullanılıyor.
- Android kaynak kodu ve gradle derleme komut dosyaları dizini: HelloJNI\AndroidPackaging
- Windows kaynak kodu ve Visual Studio proje dizini: HelloJNI
Projeyi derlediğinizde Visual Studio, uygulama düzeyindeki build.gradle
dosyasına aşağıdaki ayarları iletir. Bu ayarları, Gradle derleme komut dosyalarınızı değiştirerek değiştirebilirsiniz.
MSBUILD_NDK_VERSION
MSBUILD_MIN_SDK_VERSION
MSBUILD_JNI_LIBS_SRC_DIR
MSBUILD_ANDROID_OUTPUT_APK_NAME
MSBUILD_ANDROID_GRADLE_BUILD_OUTPUT_DIR
Örneği ayarlamak ve çalıştırmak için:
- Visual Studio'da HelloJNI örneğini açın ve derleyin.
- Android arm64-v8a platformu ekleyin. Daha fazla bilgi için Android Platformu Ekleme bölümüne bakın.
- Yeni platforma bir Android APK öğesi ekleyin.
- Projeyi derleyin.
- Şu Android platformlarını ekleyin ve sonra bunların her birine birer Android APK öğesi ekleyin: Android-armeabi-v7a, Android-x86 ve Android-x86_64.
- Örneği derleyip çalıştırın.
Sonsuz Tünel
Sonsuz Tünel örneği, oyuncunun bir tünelin sonuna ulaşmaya çalışırken beyaz küpler topladığı bir Android oyunudur. GitHub'daki Android NDK deposundaki bir OpenGL örneğinden taşınmıştır. Örnek, oyunun Windows sürümünü sağlamıyor.
Bu örneğin ayarları ve Android platformları zaten yapılandırılmıştır. Böylece, projeyi herhangi bir değişiklik yapmadan Visual Studio'da derleyip çalıştırabilirsiniz. Çözümü açtığınızda Çözüm Gezgini aşağıdaki modülleri görüntüler:
- endless-tunnel: Oyun mantığını görüntüleyen uygulama modülü.
- glm: Statik kitaplık olarak oluşturulan OpenGL Matematik deposunun anlık görüntüsü.
- Native_app_glue: NativeActivity nesnesiyle iletişim kuran bir NDK sarmalayıcı.
Demlik
Çaydanlık örneği, OpenGL ES ile oluşturulan ve aşağıdaki özellikleri göstermek için Android Oyun Geliştirme Uzantısı'na aktarılan klasik bir çaydanlığı görüntüler:
- Platformlar arası proje geliştirme: Windows ve Android için Teapot örneğini oluşturabilirsiniz.
- Özel Android paketleme kullanımı: Gradle derleme komut dosyaları,
Teapot.sln
dosyasının bulunduğu örneğin kök dizinine taşındı. - Projenin Android Studio'da açılmasını sağlayan deneysel Ninja derleme entegrasyonu.
- Adres Temizleyici (ASan) ve Donanım Adresi Temizleyici'nin (HWAsan) nasıl kullanılacağını gösteren özel Android yapılandırmaları.
Çaydanlık örneğinin uygulanması birden fazla bölüme ayrılmıştır. Bu, büyük platformlar arası uygulamalar ve oyunlar için uygundur:
GameApplication
modülü: Kullanıcının çaydanlığı döndürmesi veya uygulama istatistiklerini güncellemesi gibi kullanıcı işlemlerini ve uygulama durumlarını tanımlar.GameEngine
modülü: Temel oluşturma modülünü uygular.
Örneği ayarlamak ve Android'de çalıştırmak için hızlı başlangıç sayfasına göz atın. Örneği oluşturup Windows'da çalıştırmak için:
- GLEW'u yükleyin:
- GLEW'yi indirip sıkıştırmasını açın.
- İkili program dosyalarını
$your-glew-directory\bin\Release\x64
konumundan%SystemRoot%\system32
konumuna kopyalayın.
- Freeglut'ı yükleyin:
- freeglut'ı indirin ve sıkıştırılmış dosyayı açın.
$your-freeglut-directory\bin\x86\freeglut.dll
öğesini%SystemRoot%\system32
klasörüne kopyalayın.
- Freeglut proje bağımlılıklarını ekleyin:
Teapot.sln
dosyasını Visual Studio'da açın.- Menüde Hata Ayıkla > x64 > Yerel Windows Hata Ayıklayıcı'yı tıklayın.
- Solution Explorer'da GameApplication'yı sağ tıklayıp Özellikler > C/C++ > Genel > Ek Dizinleri Dahil Et'i seçin.
- Yola
$your-freeglut-dir\include
ekleyin.
- Tamam'ı tıklayın.
- Bağlayıcı > Genel > Ek Kitaplık Dizinleri'ni seçin.
- Yola
$your-freeglut-dir\lib\x64
ekleyin. - Tamam'ı tıklayın.
- Bağlayıcı > Genel > Ek Kitaplık Dizinleri'ni seçin.
- Yola
freeglut.lib
ekleyin. - Tamam'ı tıklayın.
- GLEW proje bağımlılıklarını ekleyin:
- Çözüm Gezgini bölmesinde GameApplication'yı sağ tıklayıp Özellikler > C/C++ > Genel > Ek Dizinleri Dahil Et'i seçin.
- Yola
$your-glew-dir\include
ekleyin. - Tamam'ı tıklayın.
- Bağlayıcı > Genel > Ek Kitaplık Dizinleri'ni seçin.
- Yola
$your-glew-dir\lib\Release\x86
ekleyin. - Tamam'ı tıklayın.
- Bağlayıcı > Genel > Ek Kitaplık Dizinleri'ni seçin.
- Yola
glew32.lib
ekleyin. - Tamam'ı tıklayın.
- Örneği Windows'da çalıştırın:
- Visual Studio araç çubuğunda Local Windows Debugger (Yerel Windows Hata Ayıklayıcısı) çalıştır düğmesini tıklayın.
- Örnek aşağıdaki gibi görünmelidir:
AssemblyCode-Bağlantı-Nesneleri
Bu, derleme ve C/C++ kaynak kodundan Android yerel kitaplığının nasıl oluşturulacağını gösteren bir şablon projesidir. Ana bileşenler şunlardır:
AssemblyCode-Link-Objects
: C++ ve derleme kaynak kodundan oluşturulan ana Android yerel kitaplığı.StaticLib
:from_static_lib_assembly_code_as
işlevini dışa aktaran bir yardımcı statik kitaplık.
Proje birden fazla mimariyi destekler. Desteklenen her mimari, StaticLib
ürününden dışa aktarılan işlevleri uygulayan kendi kaynak dosyalarına sahiptir.
Yalnızca oluşturduğunuz platformlar için derleme kaynak dosyalarını dahil etmelisiniz. Bu proje, özel derleme araçları kullanılarak oluşturulan derlemelerde montaj dosyaları içeriyor.
Örneği ayarlamak ve oluşturmak için:
- Visual Studio'da, derleme dosyaları için özel derleme araçlarının yapılandırıldığını doğrulayın:
- Çözüm Gezgini'nde derleme dosyasını sağ tıklayın ve Özellikler'i tıklayın. Bu, dosyaya ait Özellikler Sayfaları iletişim kutusunu açar.
- Yapılandırmayı ve platformu (ör. Android-arm64-v8a için Tüm yapılandırmalar) seçin.
- Genel > Derlemeden hariç tut'un Hayır olarak ayarlandığından emin olun.
- Genel > Öğe Türü seçeneğinin Özel Derleme Aracı olarak ayarlandığından emin olun.
- Uygulanacak değişiklikler varsa Uygula'yı tıklayın.
- Yapılandırma Özellikleri > Özel Derleme Araçları > Komut Satırı:
$(AsToolExe) -o "$(IntDir)%(FileName).o" %(FullPath)
olarak ayarlandığından emin olun. NDK, her CPU mimarisi için ayrı bir derleyici içerir ve$(AsToolExe)
, doğru derleyici ile eşlenir. Bu örnek, hem x86 hem de x86_64 Android projelerini derlemek için NDK araç zincirini kullanır. x86_64 Android platformu için yasm kullanmak istiyorsanız bunun yerine$(YasmToolExe)
kullanın. - Configuration Properties (Yapılandırma Özellikleri) > Custom Build Tools (Özel Derleme Araçları > Çıkışlar):
öğesinin
$(IntDir)%(FileName).o
olarak ayarlandığından emin olun. Bu dize, Komut Satırı ayarına dahil edilmelidir. - Yapılandırma Özellikleri > Özel Derleme Araçları > Bağlantı Nesneleri: seçeneğinin
Yes
olarak ayarlandığından emin olun.
Örneğin, Android-arm64-v8a ayarları aşağıdaki ekran görüntüsüne benzer olmalıdır:
- Projeyi oluşturun.
libAssmeblyCodeLinkObjects.so
dosyası oluşturulur:AssemblyCode-Link-Objects.sln
dosyasını açın.- Menüde Build > Build Solution (Oluştur > Çözüm Derleme) seçeneğini tıklayın.
- İşlevlerin Android kitaplığına doğru şekilde aktarıldığından emin olmak için nm.exe NDK aracını kullanın:
- Komut satırında örnek dizine gidin.
- Derlemeniz tarafından oluşturulan Android kitaplığı konumuna gidin. Varsayılan konum, arm64-v8a platformu için
$sample_dir\$solution_configuration\$solution_platform\$platform
ve$sample_dir\Debug\Android-arm64-v8a\arm64-v8a
konumlarına benzer. - Aşağıdaki komutu çalıştırarak dışa aktarılan simge bölümünün işlevleri içerdiğini doğrulayın:
…\ndk\toolschains\llvm\prebuilt\windows-x86_64\aarch64-linux-android\bin\nm.exe --defined-only …\Debug\Android-arm64-v8a\arm64-v8a\libAssmeblyCodeLinkObjects.so
Çıkışta aşağıdakileri içeren sembollerin bir listesini görürsünüz:
T from_shared_object_assembly_code_as
T from_static_lib_assembly_code_as