Örnekler

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:

  1. Visual Studio'da HelloJNI örneğini açın ve derleyin.
  2. Android arm64-v8a platformu ekleyin. Daha fazla bilgi için Android Platformu Ekleme bölümüne bakın.
  3. Yeni platforma bir Android APK öğesi ekleyin.
  4. Projeyi derleyin.
  5. Ş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.
  6. Ö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:

  1. GLEW'u yükleyin:
    1. GLEW'yi indirip sıkıştırmasını açın.
    2. İkili program dosyalarını $your-glew-directory\bin\Release\x64 konumundan %SystemRoot%\system32 konumuna kopyalayın.
  2. Freeglut'ı yükleyin:
    1. freeglut'ı indirin ve sıkıştırılmış dosyayı açın.
    2. $your-freeglut-directory\bin\x86\freeglut.dll öğesini %SystemRoot%\system32 klasörüne kopyalayın.
  3. Freeglut proje bağımlılıklarını ekleyin:
    1. Teapot.sln dosyasını Visual Studio'da açın.
    2. Menüde Hata Ayıkla > x64 > Yerel Windows Hata Ayıklayıcı'yı tıklayın.
    3. Solution Explorer'da GameApplication'yı sağ tıklayıp Özellikler > C/C++ > Genel > Ek Dizinleri Dahil Et'i seçin.
    4. Yola $your-freeglut-dir\include ekleyin.
      Ek Dizinleri Dahil Et iletişim kutusunun ekran görüntüsü.
    5. Tamam'ı tıklayın.
    6. Bağlayıcı > Genel > Ek Kitaplık Dizinleri'ni seçin.
    7. Yola $your-freeglut-dir\lib\x64 ekleyin. Ek Kitaplık Dizinleri iletişim kutusunun ekran görüntüsü.
    8. Tamam'ı tıklayın.
    9. Bağlayıcı > Genel > Ek Kitaplık Dizinleri'ni seçin.
    10. Yola freeglut.lib ekleyin.
    11. Tamam'ı tıklayın.
  4. GLEW proje bağımlılıklarını ekleyin:
    1. Çözüm Gezgini bölmesinde GameApplication'yı sağ tıklayıp Özellikler > C/C++ > Genel > Ek Dizinleri Dahil Et'i seçin.
    2. Yola $your-glew-dir\include ekleyin.
    3. Tamam'ı tıklayın.
    4. Bağlayıcı > Genel > Ek Kitaplık Dizinleri'ni seçin.
    5. Yola $your-glew-dir\lib\Release\x86 ekleyin.
    6. Tamam'ı tıklayın.
    7. Bağlayıcı > Genel > Ek Kitaplık Dizinleri'ni seçin.
    8. Yola glew32.lib ekleyin.
    9. Tamam'ı tıklayın.
  5. Örneği Windows'da çalıştırın:
    1. Visual Studio araç çubuğunda Local Windows Debugger (Yerel Windows Hata Ayıklayıcısı) çalıştır düğmesini tıklayın.
    2. Örnek aşağıdaki gibi görünmelidir:
      Windows'da çalışan çaydanlık örneğinin ekran görüntüsü.

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:

  1. Visual Studio'da, derleme dosyaları için özel derleme araçlarının yapılandırıldığını doğrulayın:
    1. Çö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.
    2. Yapılandırmayı ve platformu (ör. Android-arm64-v8a için Tüm yapılandırmalar) seçin.
    3. Genel > Derlemeden hariç tut'un Hayır olarak ayarlandığından emin olun.
    4. Genel > Öğe Türü seçeneğinin Özel Derleme Aracı olarak ayarlandığından emin olun.
    5. Uygulanacak değişiklikler varsa Uygula'yı tıklayın.
    6. 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.
    7. 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.
    8. 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:

    Özel Yapım Araçları Mülk Sayfasının ekran görüntüsü.
  2. Projeyi oluşturun. libAssmeblyCodeLinkObjects.so dosyası oluşturulur:
    1. AssemblyCode-Link-Objects.sln dosyasını açın.
    2. Menüde Build > Build Solution (Oluştur > Çözüm Derleme) seçeneğini tıklayın.
  3. İşlevlerin Android kitaplığına doğru şekilde aktarıldığından emin olmak için nm.exe NDK aracını kullanın:
    1. Komut satırında örnek dizine gidin.
    2. 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.
    3. 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