ความเข้ากันได้ของ Unity Editor กับ Android

Unity Editor มีการล็อกเวอร์ชันไว้กับ Gradle เวอร์ชันที่เจาะจง ซึ่งอาจขัดแย้งกับข้อกำหนดของแพ็กเกจ Android เวอร์ชันใหม่ เช่น Google Mobile Ads คู่มือต่อไปนี้จะอธิบายวิธีสร้างบิลด์ Android ใน Unity Editor เวอร์ชันเก่า

ตารางต่อไปนี้แนะนำเวอร์ชันปลั๊กอิน Google Mobile Ads ที่ใช้งานร่วมกันได้สูงสุดตาม Unity Editor ที่คุณใช้

Unity Editor เวอร์ชันปลั๊กอิน Unity ของ Google Mobile Ads ที่แนะนํา
2023.1 ขึ้นไป ล่าสุด
2021.3.41f1 - 2022.3 9.1.0
2021.3.37f1 หรือเก่ากว่า 8.5.3

ข้อกำหนดเบื้องต้น

  • ดาวน์โหลดและติดตั้ง Android Studio เวอร์ชันล่าสุดที่เสถียร
  • หากต้องการทําความเข้าใจการสร้างสําหรับ Android ให้ดียิ่งขึ้น โปรดอ่านเวอร์ชัน Java ในบิลด์ Android

อัปเดตการตั้งค่ารุ่น 2022.3 และเวอร์ชันก่อนหน้า

Unity 2022.3 และเวอร์ชันก่อนหน้ากำหนดให้ต้องเปลี่ยนการตั้งค่าบิลด์ก่อนส่งออกไปยัง Android Studio

สร้าง baseProjectTemplate.gradle

  1. เปิดใช้เทมเพลต Gradle ที่กําหนดเอง ไปที่การตั้งค่าโปรเจ็กต์ > Player > Android > การตั้งค่าการเผยแพร่ > บิลด์ แล้วเลือกเทมเพลต Gradle ฐานที่กำหนดเอง ซึ่งจะสร้างไฟล์ Plugins/Android/baseProjectTemplate.gradle

  2. แก้ไขไฟล์ Plugins/Android/baseProjectTemplate.gradle เพื่อใช้เครื่องมือ Gradle เวอร์ชัน 8.1.1 ขึ้นไป

    plugins {
        id 'com.android.application' version '8.1.1' apply false
        id 'com.android.library' version '8.1.1' apply false
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    

การเปลี่ยนแปลงเพิ่มเติมสำหรับ Unity 2021.3.37f1 และเวอร์ชันก่อนหน้า

Unity 2021.3.37f1 และเวอร์ชันก่อนหน้าต้องมีการเปลี่ยนแปลงเพิ่มเติมเพื่ออัปเกรดความเข้ากันได้เป็น Gradle 8.1.1 ทำตามขั้นตอนต่อไปนี้

สร้าง launcherTemplate.gradle

  1. ไปที่การตั้งค่าโปรเจ็กต์ > Player > Android > การตั้งค่าการเผยแพร่ > บิลด์ และเลือกเทมเพลต Gradle ของ Launcher ซึ่งจะสร้างไฟล์ Plugins/Android/launcherTemplate.gradle

  2. แก้ไข Plugins/Android/launcherTemplate.gradle ให้รวมแอตทริบิวต์เนมสเปซ ค่าแอตทริบิวต์เนมสเปซควรตรงกับแอตทริบิวต์แพ็กเกจที่พบในไฟล์ AndroidManifest.xml ของโมดูลตัวเปิด

    android {
        // TODO: Replace with your app's package name.
        namespace 'com.google.android.gms.example'
    }
    

สร้าง mainTemplate.gradle

  1. ไปที่การตั้งค่าโปรเจ็กต์ > Player > Android > การตั้งค่าการเผยแพร่ > บิลด์ แล้วเลือกเทมเพลต Gradle หลัก ซึ่งจะสร้างไฟล์ Plugins/Android/mainTemplate.gradle

.

  1. แก้ไข Plugins/Android/mainTemplate.gradle ให้รวมแอตทริบิวต์เนมสเปซที่มีค่า com.unity3d.player

    android {
        namespace 'com.unity3d.player'
    }
    

ส่งออกไปยัง Android Studio

  1. แก้ไขการตั้งค่าบิลด์ Android เพื่อส่งออกโปรเจ็กต์ Unity

  2. หากต้องการส่งออกไปยัง Android Studio ให้แก้ไขการตั้งค่าบิลด์ Android เลือกไฟล์ (หรือ Unity Editor ใน macOS) > การตั้งค่าการสร้าง แล้วเลือกส่งออกโปรเจ็กต์

  3. กดปุ่มส่งออกที่ด้านล่างของกล่องโต้ตอบการตั้งค่าการสร้าง Unity จะสร้างโปรเจ็กต์ Android ในตำแหน่งที่เลือก

  4. เปิดโปรเจ็กต์ที่ส่งออกใน Android Studio

อัปเดตการกำหนดค่า JDK ของ Gradle เพื่อใช้ JDK 17

  1. เมื่อใช้ Android Studio ให้เปิดการตั้งค่า Gradle จากไฟล์ (หรือ Android Studio ใน macOS) > การตั้งค่า > บิลด์ การดำเนินการ การนำส่ง > เครื่องมือสร้าง > Gradle
  2. ค้นหาเมนูแบบเลื่อนลง Gradle JDK แก้ไข JDK ของ Gradle ให้ใช้ JDK 17

    หากยังไม่ได้ติดตั้ง JDK 17 ให้เลือกตัวเลือกดาวน์โหลด JDK จากเมนูแบบเลื่อนลงของ Gradle JDK แล้วดาวน์โหลดเวอร์ชันที่เข้ากันได้ เราขอแนะนำให้ใช้รันไทม์ JetBrains กับผู้ให้บริการที่รองรับ arch64 เพื่อให้ตรงกับสิ่งที่ Android Studio เผยแพร่

อัปเดตไฟล์ Wrapper ของ Gradle

แก้ไขพารามิเตอร์ distributionUrl ภายใน gradle/wrapper/gradle-wrapper.properties เพื่อใช้ Gradle 8.0.1 ขึ้นไป

   distributionBase=GRADLE_USER_HOME
   distributionPath=wrapper/dists
   zipStoreBase=GRADLE_USER_HOME
   zipStorePath=wrapper/dists
   distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-bin.zip

การเปลี่ยนแปลงเพิ่มเติมของ Android Studio สำหรับ Unity 2021.3.37f1 และเวอร์ชันก่อนหน้า

Unity 2021.3.37f1 และเวอร์ชันก่อนหน้าต้องมีการเปลี่ยนแปลงเพิ่มเติมเพื่ออัปเกรดความเข้ากันได้กับ Gradle 8.1.1 ทำตามขั้นตอนต่อไปนี้

  1. แก้ไข gradle.properties และนําแอตทริบิวต์ android.enableR8=false ออก

  2. แก้ไข unityLibrary/GoogleMobileAdsPlugin.androidlib/build.gradle และใส่แอตทริบิวต์เนมสเปซที่มีค่า "com.google.unity.ads"

    apply plugin: 'android-library'
    
    dependencies {
        implementation fileTree(dir: 'bin', include: ['*.jar'])
        implementation fileTree(dir: 'libs', include: ['*.jar'])
    }
    
    android {
        namespace "com.google.unity.ads"
        sourceSets {
            main {
                manifest.srcFile 'AndroidManifest.xml'
                //java.srcDirs = ['src']
                res.srcDirs = ['res']
                assets.srcDirs = ['assets']
                jniLibs.srcDirs = ['libs']
            }
        }
    
        compileSdkVersion 35
        buildToolsVersion '30.0.3'
        defaultConfig {
            targetSdkVersion 31
        }
    
        lintOptions {
            abortOnError false
        }
    }
    

เรียกใช้โปรเจ็กต์ Android

หลังจากทำตามขั้นตอนเหล่านี้เสร็จแล้ว แอปพลิเคชัน Unity จะพร้อมใช้งาน จาก Android Studio ให้เรียกใช้ Gradle Sync และเรียกใช้โปรเจ็กต์