Örnekler

Android Oyun Geliştirme Uzantısı örnekleri, temel özelliklerin nasıl kullanılacağını gösterir görünür. Bu konu başlığında örnekler ve bunları çalıştırmak için gereken ayarlar.

Aşağıdaki örnekler indirilenler sayfası için:

  • HelloJNI: Bir tanıtım projesi.
  • Endless-Tunnel: Yalnızca Android'e özel bir proje.
  • Teapot: Windows ve Android için platformlar arası bir proje.
  • AssemblyCode-Link-Objects: Derleme kaynak koduna sahip bir şablon projesi.

Başlamadan önce

  • Android Game Development Extension'ı ve örnekleri yükleyin. Bkz. hızlı başlangıç kılavuzunu inceleyin. Ayrıca konu hakkında ve bir örnek çalıştırıp Teapot örneğinin Android sürümünü kullanır. açıklayacağım.

  • Proje yapılandırma kılavuzunda, uzantıyı kullanan bir proje için ayarları yapılandırın: bir Android platformu ve APK ekleyebilirsiniz.

MerhabaJNI

HelloJNI örneği "HelloJNI'dan Merhaba" mesajı gösteren basit bir projedir simgesini tıklayın. Proje, Windows ve diğer platformlar için farklı bir kaynak kodu kümesi kullanıyor Android

  • 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 şu bilgileri iletir: uygulama düzeyindeki build.gradle dosyasına yönlendirir. Bu ayarları şu şekilde değiştirebilirsiniz: Gradle derleme komut dosyalarınızı değiştirme hakkında daha fazla bilgi edinin.

  • 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 bkz. Android Platformu ekleme.
  3. Android APK öğesi ekleme yeni platforma geçiyoruz.
  4. Projeyi derleyin.
  5. Aşağıdaki Android platformlarını, ardından bir Android APK öğesi ekleyin Android-armeabi-v7a, Android-x86 ve Android-x86_64.
  6. Örneği derleyin ve çalıştırın.

Sonsuz Tünel

Endless-Tunnel örneği, oyuncunun beyaz toprak topladığı bir Android oyunudur küpleri vardır. Bir OpenGL'den taşındı örneklemi GitHub'da Android NDK deposu. Örnek, oyunun Windows sürümünü sağlamıyor.

Örnekte ayarları ve Android platformları yapılandırılmış olduğundan projeyi Visual Studio'da herhangi bir değişiklik yapmadan derleyip çalıştırabilirsiniz. Google Takvim widget'ını Çözüm Gezgini şu modülleri görüntüler:

  • sonsuz-tunnel: Oyun mantığını görüntüleyen uygulama modülü.
  • glm: OpenGL Matematik deposunun anlık görüntüsü statik bir kitaplık olarak oluşturulur.
  • Native_app_glue: " Yerel Etkinlik nesnesini tanımlayın.

Demlik

Demlik örneği, OpenGL ES ile oluşturulan klasik bir çaydanlığı gösteriyor ve aşağıdaki özellikleri göstermek için Android Oyun Geliştirme Uzantısı'na aktarılmıştır:

  • Platformlar arası proje geliştirme: Her ekip için Teapot örneği Windows ve Android.
  • Özel Android paketleme kullanımı: Gradle derleme komut dosyaları örneğin, Teapot.sln dosyasının bulunduğu kök dizini.
  • Etkinleştiren deneysel Ninja derleme entegrasyonu projeyi Android Studio'da açabilirsiniz.
  • Nasıl kullanılacağını gösteren özel Android yapılandırmaları Adres Temizleyici (ASan) ve Donanım Adresi Temizleyici (HWAsan).

Çaydanlık örneği uygulaması, birden çok bölüme ayrılmıştır. büyük platformlar arası uygulamalar ve oyunlar için tipik:

  • GameApplication modülü: Kullanıcı işlemlerini ve uygulama durumlarını tanımlar. Örneğin: Çaydanlığı döndüren veya uygulama istatistiklerini güncelleyen bir kullanıcı.
  • 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. Alıcı: örneği oluşturun ve Windows'da çalıştırın:

  1. GLEW'yu yükleme:
    1. GLEW'yu indirip sıkıştırılmış dosyayı açın.
    2. İkili dosya dosyalarını $your-glew-directory\bin\Release\x64 - %SystemRoot%\system32.
  2. freeglut'ı yükleyin:
    1. freeglut dosyasını indirip sıkıştırılmış dosyayı açın.
    2. $your-freeglut-directory\bin\x86\freeglut.dll değerini %SystemRoot%\system32 hedefine kopyalayın.
  3. Freeglut projesi bağımlılıklarını ekleyin:
    1. Teapot.sln öğesini Visual Studio'da açın.
    2. Menüde Hata ayıkla > x64 > Yerel Windows Hata Ayıklayıcısı.
    3. Çözüm Gezgini'nde sağ tıklayın GameApplication'a (Oyun Uygulaması) gidin ve Özellikler > C/C++ > Genel > Ek Dizinleri Dahil Et.
    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 bölümüne gidin.
    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 bölümüne gidin.
    10. Yola freeglut.lib ekleyin.
    11. Tamam'ı tıklayın.
  4. GLEW projesi bağımlılıklarını ekleyin:
    1. Çözüm Gezgini bölmesinde sağ tıklayın GameApplication'a (Oyun Uygulaması) gidin ve Özellikler > C/C++ > Genel > Ek Dizinleri Dahil Et.
    2. Yola $your-glew-dir\include ekleyin.
    3. Tamam'ı tıklayın.
    4. Bağlayıcı > Genel > Ek Kitaplık Dizinleri bölümüne gidin.
    5. Yola $your-glew-dir\lib\Release\x86 ekleyin.
    6. Tamam'ı tıklayın.
    7. Bağlayıcı > Genel > Ek Kitaplık Dizinleri bölümüne gidin.
    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 Yerel Windows Hata Ayıklayıcı çalıştırma düğmesini tıklayın.
    2. Örnek aşağıdaki gibi görünecektir:
      Windows'da çalışan Teapot örneğinin ekran görüntüsü.

Bu, Android'de yerel reklam oluşturmayı gösteren bir şablon projesidir kitaplığını bulmanız gerekir. Ana bileşenler şunlardır:

  • AssemblyCode-Link-Objects: C++ ile geliştirilen ana Android yerel kitaplığı derleme kaynak kodunu yazın.
  • StaticLib: from_static_lib_assembly_code_as işlevi.

Proje birden fazla mimariyi destekliyor. Desteklenen her mimarinin kendine özgü özellikleri StaticLib ürününden dışa aktarılan işlevleri uygulayan kendi kaynak dosyalarınız. Yalnızca kullandığınız platformların derleme kaynak dosyalarını dahil etmelisiniz. yapı. Bu proje, özel derleme araçları hakkında daha fazla bilgi edinin.

Örneği ayarlamak ve derlemek için:

  1. Visual Studio'da, özel derleme araçlarının şunun için yapılandırıldığını doğrulayın: derleme dosyaları:
    1. Çözüm Gezgini'nde sağ tıklayın. derleme dosyasını seçin ve Özellikler'i tıklayın. Bu, Dosya için Mülk Sayfaları iletişim kutusu.
    2. Yapılandırmayı ve platformu seçin. Örneğin: Şunun için tüm yapılandırmalar: Android-arm64-v8a.
    3. Genel > Derlemeden hariç tut seçeneği ayarlandı Hayır olarak değiştirin.
    4. Genel > Öğe Türü ayarlandı Özel Oluşturma Aracı'na bağlanabilirsiniz.
    5. Uygulanacak değişiklikler varsa Uygula'yı tıklayın.
    6. Lütfen Yapılandırma Özellikleri > Özel Derleme Araçları > Komut Satırı: , olarak ayarlandı $(AsToolExe) -o "$(IntDir)%(FileName).o" %(FullPath). NDK'da her CPU mimarisi ve $(AsToolExe) doğru derleyici ile eşleşiyor. Bu örnek hem x86 hem de x86_64 Android derlemesi için NDK araç zincirini kullanır bilgi edinmenizi sağlar. x86_64 Android platformu için yasm kullanmak istiyorsanız bunun yerine $(YasmToolExe) kullanın.
    7. Lütfen Yapılandırma Özellikleri > Özel Derleme Araçları > Çıktılar: , olarak ayarlandı $(IntDir)%(FileName).o. Bu dize dahil edilmelidir Komut Satırı ayarına gidin.
    8. Lütfen Yapılandırma Özellikleri > Özel Derleme Araçları > Bağlantı Nesneleri: , olarak ayarlandı Yes.

    Örneğin, Android-arm64-v8a ayarları aşağıdaki ekran görüntüsüne benzeyecek:

    Özel Derleme Araçları Mülk Sayfası'nın ekran görüntüsü.
  2. Projeyi oluşturun. Bu da libAssmeblyCodeLinkObjects.so dosyası:
    1. AssemblyCode-Link-Objects.sln dosyasını açın.
    2. Menüde Derleme > Çözüm Derleyin.
  3. İşlevlerin Android'e doğru şekilde aktarıldığını onaylamak için eklemek için nm.exe NDK aracını kullanın:
    1. Komut satırında örnek dizine gidin.
    2. Android kitaplığınız tarafından oluşturulan konuma gidin seçeceğiz. Varsayılan konum şuna benzer: $sample_dir\$solution_configuration\$solution_platform\$platform. ve şunun için $sample_dir\Debug\Android-arm64-v8a\arm64-v8a: arm64-v8a platformu.
    3. Dışa aktarılan simge bölümünün fonksiyonları içerdiğini doğrulamak için aşağıdaki komutu çalıştırı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, takip etmek için:

         T from_shared_object_assembly_code_as
         T from_static_lib_assembly_code_as