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.
Derleme ve bağlantı seçeneklerinizi ayarlama
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:
- Derleme > Yapılandırma Yöneticisi'ni seçin.
- Etkin çözüm platformu bölümünde <Yeni>'yi seçin.
Yeni platform için aşağıdakilerden birini yazın:
- Android-armeabi-v7a
- Android-arm64-v8a
- Android-x86
- Android-x86_64
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 genellikleapp
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ğiGradle 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ğiAndroid 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ğiGradle 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.