กําหนดค่าโปรเจ็กต์

กำหนดค่าโปรเจ็กต์เพื่อใช้ส่วนขยายการพัฒนาเกม Android

ส่วนขยายการพัฒนาเกม Android เรียกใช้ MSBuild เพื่อสร้างซอร์สโค้ด C/C++ ลงในไฟล์ที่แชร์ ไลบรารี (.so) และไลบรารีแบบคงที่ (.a) ส่วนหนึ่งของกระบวนการสร้าง งาน MSBuild ที่กำหนดเองจะเรียกใช้ Gradle เพื่อคอมไพล์ซอร์สโค้ด Java และ Kotlin แพ็กเกจเนื้อหา และสร้างไฟล์ APK สำหรับการทำให้ใช้งานได้ เมื่อคุณกำหนดค่า คุณต้องตรวจสอบว่า MSBuild มีข้อมูลที่ต้องใช้ในการสร้าง แพลตฟอร์ม Android

สร้าง C/C++ ด้วย MSBuild

โปรเจ็กต์ Android โดยทั่วไปสร้างขึ้นด้วย Gradle โดยโค้ดแบบเนทีฟภายใน สร้างโปรเจ็กต์โดย Gradle Pass ที่เรียกใช้ CMake หรือ ndk-build ด้วยส่วนขยายการพัฒนาเกมสำหรับ Android สำหรับการแสดงผล Studio โดยกระบวนการบิลด์จะกลับด้าน ตอนนี้ MSBuild เป็นจุดเริ่มต้นของ สร้างกระบวนการสร้าง ซอร์สโค้ด C/C++ ทั้งหมดสร้างขึ้นโดย MSBuild สำหรับ แพลตฟอร์ม Android ที่ติดตั้งในระบบโดยเป็นส่วนหนึ่งของส่วนขยาย (สำหรับ เช่น "Android-x86_64") MSBuild จะเรียกใช้ Gradle แพ็กเกจไฟล์ที่แชร์ ไฟล์ไลบรารีที่มีตรรกะ C/C++ ของคุณลงใน APK

คุณควรจำลองตรรกะบิลด์ที่มีอยู่ของโปรเจ็กต์ใน CMake หรือ ndk-build ใน MSBuild ตั้งค่าแพลตฟอร์มเป้าหมายดังนี้

  • Android X86
  • Android X86_64
  • Android-armeabi-v7a
  • Android-Arm64-V8a

แพลตฟอร์มเหล่านี้ทั้งหมดให้บริการโดยส่วนขยายการพัฒนาเกม Android

เพิ่มแพลตฟอร์ม Android

แม้ว่าโปรเจ็กต์ตัวอย่างกาน้ำชาจะมีแพลตฟอร์ม Android แต่คุณต้องทำด้วยตนเอง เพิ่มแพลตฟอร์ม Android ลงในโปรเจ็กต์ที่มีอยู่ หากต้องการเพิ่มแพลตฟอร์มใหม่ ให้ทำ ต่อไปนี้ใน Visual Studio

  1. เลือก Build > เครื่องมือจัดการการกำหนดค่า
  2. ในส่วนแพลตฟอร์มโซลูชันที่ใช้งานอยู่ ให้เลือก<ใหม่>
  3. พิมพ์ 1 ภาษาต่อไปนี้สำหรับแพลตฟอร์มใหม่

    • Android-armeabi-v7a
    • Android-arm64-v8a
    • Android-X86
    • Android-X86_64
  4. ในช่องคัดลอกการตั้งค่าจาก ให้เลือก Android เครื่องอื่นที่มีอยู่ หรือ <Empty> หากคุณยังไม่มีแพลตฟอร์ม Android ตรวจสอบว่าได้เปิดใช้ตัวเลือกสร้างแพลตฟอร์มของโปรเจ็กต์ใหม่แล้ว

เพิ่มรายการ Android APK

เลือกเพิ่ม > รายการใหม่ > ภาพ C++ > Android > Android APK และคลิก เพิ่ม กำหนดค่าแอปพลิเคชัน Android ในกรอบข้อความต่อไปนี้

  • ชื่อแอปพลิเคชัน: ชื่อแอปพลิเคชัน Android ที่มนุษย์อ่านได้
  • รหัสแอปพลิเคชัน: ตัวระบุที่ไม่ซ้ำกัน สำหรับแอปพลิเคชัน Android ของคุณ
  • ตำแหน่งของเครื่องมือสำรวจโซลูชัน: ตำแหน่งของโฟลเดอร์เสมือนที่มี ไฟล์สนับสนุนแพ็กเกจ Android ที่เพิ่มเข้ามา โดยค่าเริ่มต้น ไฟล์เหล่านี้ยัง ซึ่งอยู่ในโฟลเดอร์ที่มีชื่อเดียวกัน คุณสามารถปรับแต่ง ได้โดยเลือกช่องนำไฟล์สนับสนุนไปไว้ในตำแหน่งที่กำหนดเอง ช่องทำเครื่องหมายและระบุตำแหน่งที่กำหนดเอง โฟลเดอร์เสมือนจะยังคง ภายใต้โปรเจ็กต์ปัจจุบันใน Solution Explorer

ทำให้ MSBuild เรียกใช้ Gradle เพื่อสร้าง APK

MSBuild จะเรียกใช้ Gradle ไม่ได้ เว้นแต่จะทราบตำแหน่งของโปรเจ็กต์ Gradle ตั้งค่าตำแหน่งนี้โดยใช้คุณสมบัติ Gradle Build Directory ในฐานะ ที่แสดงในรูปที่ 1


รูปที่ 1 พร็อพเพอร์ตี้ Gradle Build Directory

นอกจากนี้ ให้ตั้งค่าโมดูลแอปพลิเคชัน ตัวแปรของแอปพลิเคชัน และ APK ชื่อ (ตามที่แสดงในรูปภาพก่อนหน้า) เพื่อให้ MSBuild ทราบ ต้องสร้างอะไร

  • โมดูลแอปพลิเคชัน: ชื่อของโปรเจ็กต์ย่อย Gradle นี่คือข้อมูลหลัก ตั้งค่าโปรเจ็กต์ในไฟล์ settings.gradle มักจะเรียกว่า app สำหรับ โปรเจ็กต์ที่สร้างโดยตรงโดยใช้ Android Studio
  • ตัวแปรแอปพลิเคชัน: ตัวแปร Android ที่จะสร้าง ค่านี้ควรเป็น ตั้งค่าตามการกำหนดค่า MSBuild ตัวอย่างเช่น บิลด์การแก้ไขข้อบกพร่อง ควรมีค่าตั้งค่าเป็นตัวแปรการแก้ไขข้อบกพร่อง หาก MSBuild ของโปรเจ็กต์ ชื่อการกำหนดค่าตรงกับชื่อตัวแปร Gradle ให้ใช้ ค่าเริ่มต้นคือ $(Configuration)
  • ชื่อ APK: ชื่อของไฟล์ APK ที่สร้างขึ้น ซึ่งใช้สำหรับการแก้ไขข้อบกพร่องและ ในการทำโปรไฟล์บนคอมพิวเตอร์การพัฒนาของคุณ ชื่อนี้จะส่งไปยัง Gradle และ สคริปต์บิลด์ Gradle ควรเป็นไปตามนี้ (ดูพร็อพเพอร์ตี้ MSBUILD_ANDROID_OUTPUT_APK_NAMEในส่วนต่อไปนี้)

แก้ไขสคริปต์บิลด์ Gradle

ระหว่างการสร้าง MSBuild จะส่งข้อมูลต่อไปนี้เป็นพร็อพเพอร์ตี้ของโปรเจ็กต์ ลงในสคริปต์ Gradle เปลี่ยนสคริปต์บิลด์ที่มีอยู่ของโปรเจ็กต์ (โดยทั่วไป ชื่อ build.gradle) เพื่ออ่านพร็อพเพอร์ตี้เหล่านี้

  • MSBUILD_MIN_SDK_VERSION: เวอร์ชัน SDK ขั้นต่ำสำหรับการสร้าง APK ตั้งค่า ค่านี้ในช่องเวอร์ชัน Android SDK ขั้นต่ำในโปรเจ็กต์ หน้าอสังหาริมทรัพย์ที่แสดงในรูปที่ 2


    รูปที่ 2 พร็อพเพอร์ตี้เวอร์ชัน Android SDK ขั้นต่ำ

    สคริปต์บิลด์ Gradle ควรตั้งค่า minSdkVersion เป็นค่านี้ ตามที่แสดง ที่ด้านล่าง

    ดึงดูด

    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: ชื่อที่คาดไว้ของ APK ที่ Gradle งานสร้าง ส่วนขยายการพัฒนาเกม Android จะมองหา APK ที่ตรงกับชื่อนี้ จากนั้นให้ติดตั้งใช้งานกับอุปกรณ์ที่เชื่อมต่อ (สำหรับการแก้ไขข้อบกพร่องและการทำโปรไฟล์) ตั้งค่าสิ่งนี้ ในช่องชื่อ APK ในหน้าพร็อพเพอร์ตี้ของโปรเจ็กต์ที่แสดงในรูปที่ 3


    รูปที่ 3 พร็อพเพอร์ตี้ชื่อ APK

    สคริปต์บิลด์ Gradle ต้องเป็นไปตามพร็อพเพอร์ตี้นี้ ตัวอย่างเช่น พารามิเตอร์ ตัวอย่างต่อไปนี้ตั้งชื่อ APK เอาต์พุตสำหรับตัวแปรทั้งหมดเป็นชื่อ จาก MSBuild

    ดึงดูด

    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: ไดเรกทอรีที่มีไลบรารีที่ใช้ร่วมกัน (.so ไฟล์) สร้างโดย MSBuild ตั้งค่านี้ในไดเรกทอรีเอาต์พุต ในหน้าพร็อพเพอร์ตี้ของโปรเจ็กต์ที่แสดงด้านล่าง โดยค่าเริ่มต้น ค่านี้จะเป็น พร็อพเพอร์ตี้ไดเรกทอรีเอาต์พุตสำหรับโครงการ Visual Studio ดังที่แสดงในรูปที่ 4


    รูปที่ 4 พร็อพเพอร์ตี้ไดเรกทอรีเอาต์พุต

    Gradle ควรรวมไฟล์ไลบรารีที่แชร์ในโฟลเดอร์นี้ภายใน APK เพื่อให้แอปพลิเคชัน Android โหลดขณะรันไทม์

    ดึงดูด

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

    Kotlin

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

    นอกจากนี้ เนื่องจากขณะนี้โค้ด C/C++ ได้สร้างโดย MSBuild โปรดลบโค้ด externalNativeBuild ส่วนในสคริปต์บิลด์ของ Gradle ส่วนเหล่านี้ ถูกใช้ในการเรียกใช้ CMake หรือ ndk-build เพื่อคอมไพล์โค้ด C/C++ แต่ ที่ไม่จำเป็นอีกต่อไป

  • MSBUILD_NDK_VERSION: เวอร์ชันของ NDK ที่จะใช้ในการสร้าง ตั้งค่านี้ในช่องเวอร์ชัน Android NDK บนอุปกรณ์ หน้าอสังหาริมทรัพย์ของโครงการที่แสดงในรูปที่ 5


    รูปที่ 5 พร็อพเพอร์ตี้เวอร์ชัน Android NDK

    สคริปต์บิลด์ Gradle ควรตั้งค่า ndkVersion เป็นค่านี้ ดังที่แสดงด้านล่างนี้

    ดึงดูด

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

    Kotlin

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

    สำหรับข้อมูลเพิ่มเติม โปรดดูหัวข้อ Android Studio ติดตั้งและกำหนดค่า NDK และ CMake