Proje yapılandırma

Android Game Development Extension'ı kullanacak şekilde bir proje yapılandırın.

Android Game Development Extension, C/C++ kaynak kodunu paylaşılan kitaplıklar (.so) ve statik kitaplıklar (.a) halinde derlemek için MSBuild'i çağırır. Özel bir MSBuild görevi, derleme sürecinin bir parçası olarak Java ve Kotlin kaynak kodunu derlemek, öğeleri paketlemek ve dağıtım için bir APK dosyası oluşturmak üzere Gradle'i çağırır. Projenizi yapılandırırken MSBuild'in Android platformu için derleme yapması gereken bilgilere sahip olduğundan emin olmanız gerekir.

MSBuild ile C/C++ derleme

Tipik bir Android projesi Gradle ile derlenir. Projedeki yerel kod, CMake veya ndk-build çalıştıran bir Gradle geçişi tarafından derlenir. Visual Studio için Android Game Development Extension ile derleme süreci tersine çevrilir. Artık derleme sürecinin başlangıç noktası MSBuild'dir. Tüm C/C++ kaynak kodu, uzantı kapsamında sisteminize yüklenen yeni Android platformları (ör. "Android-x86_64") için önce MSBuild tarafından derlenir. Ardından MSBuild, C/C++ mantığınızı içeren ortak kitaplık dosyalarını APK'ya paketlemek için Gradle'i çağırır.

Öncelikle projenizin mevcut derleme mantığını CMake'de veya MSBuild'de ndk-build ile kopyalamanız gerekir. Hedef platformları aşağıdaki şekilde ayarlayın:

  • Android-x86
  • Android-x86_64
  • Android-armeabi-v7a
  • Android-arm64-v8a

Bu platformların tümü Android Game Development Extension tarafından sağlanır.

AGDE, uygulamanızın C/C++ bölümünü oluştururken varsayılan derleme ve bağlantı seçeneklerini belirlemek için seçtiğiniz NDK'yı kullanır.

Bu derleme veya bağlantı seçeneklerini özelleştirmeniz gerekiyorsa Proje Özellikleri'ni kullanarak bunları ayarlayabilirsiniz. En yaygın seçenekleri C/C++ (derleme için), Librarian (statik kitaplık arşivleme için) ve Linker (dinamik kitaplık bağlama için) gruplarında bulabilirsiniz. Başka özel seçenekler iletmeniz gerekiyorsa bunları Komut satırı bölümüne ekleyebilirsiniz. Örneğin, r28'den eski bir NDK kullanıyorsanız uygulamanızın 16 KB sayfa boyutlarını desteklemesi için bağlayıcı işaretini ayarlayabilirsiniz.

Android platformu ekleme

Çaydanlık örnek projesi Android platformları içerse de mevcut bir projeye Android platformu manuel olarak eklemeniz gerekir. Yeni bir platform eklemek için Visual Studio'da aşağıdakileri yapın:

  1. Derleme > Yapılandırma Yöneticisi'ni seçin.
  2. Etkin çözüm platformu bölümünde <Yeni>'yi seçin.
  3. Yeni platform için aşağıdakilerden birini yazın:

    • Android-armeabi-v7a
    • Android-arm64-v8a
    • Android-x86
    • Android-x86_64
  4. Ayarlarını kopyalanacak platform kutusunda, mevcut başka bir Android platformunu veya henüz Android platformunuz yoksa <Boş>'u seçin. Yeni proje platformları oluştur'u etkinleştirdiğinizden emin olun.

Android APK öğesi ekleme

Ekle > Yeni Öğe > Visual C++ > Android > Android APK'yı seçin ve Ekle'yi tıklayın. Aşağıdaki iletişim kutusunda Android uygulamasını yapılandırın.

  • Uygulama Adı: Android uygulamanızın kullanıcılar tarafından okunabilen adı.
  • Uygulama kimliği: Android uygulamanızın benzersiz tanımlayıcısı.
  • Çözüm Gezgini Konumu: Eklenen Android paketleme destek dosyalarını içeren sanal klasörün konumu. Bu dosyalar varsayılan olarak projede aynı ada sahip bir klasörde bulunur. Destek dosyalarını özel bir konuma koy onay kutusunu işaretleyip özel bir konum belirterek konumu özelleştirebilirsiniz. Sanal klasör, Çözüm Gezgini'nde mevcut projenin altında kalır.

MSBuild'in APK oluşturmak için Gradle'i çağırmasını sağlama

MSBuild, Gradle projesinin konumunu bilmediği sürece Gradle'ı çağıramaz. Bu konumu, şekil 1'de gösterildiği gibi Gradle Derleme Dizini özelliğini kullanarak ayarlayın.


Şekil 1. Gradle Derleme Dizini özelliği

Ayrıca, MSBuild'in neyi derleyeceğini bilmesi için Uygulama Modülü, Uygulama Varyantı ve APK Adı özelliklerini (önceki resimde gösterildiği gibi) ayarlayın.

  • Uygulama Modülü: Gradle alt projesinin adı. Bu, settings.gradle dosyasında ayarlanan ana projedir. Doğrudan Android Studio kullanılarak oluşturulan projeler için genellikle app olarak adlandırılır.
  • Uygulama Varyantı: Oluşturulacak Android varyantı. Bu değer, MSBuild yapılandırmalarına göre ayarlanmalıdır. Örneğin, hata ayıklama derlemesinde hata ayıklama varyantı için ayarlanmış bir değer olmalıdır. Projenizin MSBuild yapılandırma adı Gradle varyant adlarıyla eşleşiyorsa $(Configuration) varsayılan değerini kullanın.
  • APK Adı: Geliştirme bilgisayarınızda hata ayıklama ve profil oluşturma için kullanılan oluşturulan APK dosyasının adı. Bu ad Gradle'a iletilir ve Gradle derleme komut dosyanız buna uymalıdır (aşağıdaki bölümde MSBUILD_ANDROID_OUTPUT_APK_NAME mülküne bakın).

Gradle derleme komut dosyalarınızı değiştirme

MSBuild, derleme sırasında aşağıdaki bilgileri proje özellikleri olarak Gradle komut dosyasına iletir. Projenizin mevcut derleme komut dosyalarını (genellikle build.gradle olarak adlandırılır) bu özellikleri okuyacak şekilde değiştirin.

  • MSBUILD_MIN_SDK_VERSION: APK'yı derlemek için gereken minimum SDK sürümü. Bu değeri, şekil 2'de gösterilen proje mülkü sayfasındaki Minimum Android SDK sürümü kutusuna ayarlayın.


    Şekil 2. Minimum Android SDK sürümü mülkü

    Gradle derleme komut dosyası, minSdkVersion değerini aşağıda gösterildiği gibi bu değere ayarlamalıdır.

    Groovy

    android {
      // ...
    
      defaultConfig {
          applicationId "com.yourcompany.yourapp"
          minSdkVersion MSBUILD_MIN_SDK_VERSION
          // ...
      }
    
      // ...
    }

    Kotlin

    android {
      // ...
    
      defaultConfig {
          applicationId = "com.yourcompany.yourapp"
          minSdkVersion(MSBUILD_MIN_SDK_VERSION)
          // ...
      }
    
      // ...
    }
  • MSBUILD_ANDROID_OUTPUT_APK_NAME: Gradle'in derlediği APK'nın beklenen adıdır. Android Game Development Extension, bu adla eşleşen bir APK arar ve ardından bağlı cihazlara dağıtır (hata ayıklama ve profil oluşturma için). Bu değeri, 3. resimde gösterilen proje mülkü sayfasındaki APK Adı kutusuna girin.


    Şekil 3. APK Adı özelliği

    Gradle derleme komut dosyası bu özelliğe uymalıdır. Örneğin, aşağıdaki örnekte tüm varyantların çıkış APK adı, MSBuild tarafından seçilen adla ayarlanmıştır.

    Groovy

    android {
      // ...
    
      applicationVariants.all { variant ->
          variant.outputs.all {
              outputFileName = MSBUILD_ANDROID_OUTPUT_APK_NAME
          }
      }
    
      // ...
    }

    Kotlin

    android {
      // ...
    
      applicationVariants.all { variant ->
          variant.outputs.all {
              outputFileName = MSBUILD_ANDROID_OUTPUT_APK_NAME
          }
      }
    
      // ...
    }
  • MSBUILD_JNI_LIBS_SRC_DIR: MSBuild tarafından oluşturulan paylaşılan kitaplıkları (.so dosyaları) içeren dizin. Bu değeri, aşağıda gösterilen proje mülkü sayfasındaki Çıkış Dizini kutusunda ayarlayın. Varsayılan olarak bu değer, Şekil 4'te gösterildiği gibi Visual Studio projesinin çıkış dizini özelliğidir.


    Şekil 4. Çıkış Dizini özelliği

    Android uygulamasının çalışma zamanında bu kitaplıkları yükleyebilmesi için Gradle, bu klasördeki paylaşılan kitaplık dosyalarını APK'nın içine paketlemelidir.

    Groovy

    android {
      // ...
    
      sourceSets {
          main {
              jniLibs.srcDirs += [MSBUILD_JNI_LIBS_SRC_DIR]
          }
      }
    
      // ...
    }

    Kotlin

    android {
      // ...
    
      sourceSets.getByName("main") {
          jniLibs.srcDir(MSBUILD_JNI_LIBS_SRC_DIR)
      }
    
      // ...
    }

    Ayrıca, tüm C/C++ kodları artık MSBuild tarafından derlendiğinden Gradle derleme komut dosyalarınızdaki externalNativeBuild bölümlerini kaldırın. Bu bölümler, C/C++ kodunuzu derlemek için CMake veya ndk-build'i çağırmak amacıyla kullanılıyordu ancak artık gerekli değildir.

  • MSBUILD_NDK_VERSION: Projenizi derlemek için kullanılacak NDK sürümü. Bu değeri, şekil 5'te gösterilen proje mülkü sayfasındaki Android NDK Sürümü kutusunda ayarlayın.


    Şekil 5. Android NDK Sürümü özelliği

    Gradle derleme komut dosyası, ndkVersion değerini aşağıdaki gibi ayarlamalıdır:

    Groovy

    android {
      // ...
    
      ndkVersion MSBUILD_NDK_VERSION
    
      // ...
    }

    Kotlin

    android {
      // ...
    
      ndkVersion = MSBUILD_NDK_VERSION
    
      // ...
    }

    Daha fazla bilgi için Android Studio'daki NDK ve CMake'i yükleme ve yapılandırma konusuna bakın.