บิลด์ Unity สำหรับ Android

เครื่องมือแก้ไขของ Unity มีการล็อกเวอร์ชันไว้กับ Gradle เวอร์ชันหนึ่งๆ Unity Editor เวอร์ชันเก่าใช้ Gradle เวอร์ชันเก่าซึ่งใช้ร่วมกับ Google Mobile Ads เวอร์ชันล่าสุดไม่ได้

ตารางต่อไปนี้แสดงเวอร์ชันปลั๊กอิน 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

คุณสามารถอัปเดต Gradle ด้วยตนเองเพื่อใช้ปลั๊กอิน Google Mobile Ads Unity เวอร์ชันล่าสุด รวมถึง Unity Editor เวอร์ชันเก่า หากต้องการสร้าง Android ให้เลือกเวอร์ชัน Unity Editor ที่ต้องการ

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

โปรดตรวจสอบว่าคุณมีสิ่งต่อไปนี้ก่อนที่จะดำเนินการต่อ

เปิดใช้เทมเพลต Gradle ที่กําหนดเอง

ไปที่การตั้งค่าโปรเจ็กต์ > Player > Android > การตั้งค่าการเผยแพร่ > บิลด์ และเปิดใช้ Custom Main Gradle Template และ Custom Gradle Properties Template

เปิดใช้เทมเพลต Gradle ที่กําหนดเอง

ตั้งค่าระดับ API เป้าหมายเป็น 34

จากเมนูหลัก ให้เปิดแก้ไข > การตั้งค่าโปรเจ็กต์ > โปรแกรมเล่น > Android > การตั้งค่าอื่นๆ แล้วตั้งค่าระดับ API เป้าหมายเป็นระดับ API 34 ขึ้นไป

ตั้งค่าระดับ API เป้าหมาย

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

จาก Android Studio ให้เรียกใช้การซิงค์ Gradle และเรียกใช้โปรเจ็กต์

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

โปรดตรวจสอบว่าคุณมีสิ่งต่อไปนี้ก่อนที่จะดำเนินการต่อ

  • ดาวน์โหลดและติดตั้ง Android Studio เวอร์ชันล่าสุดที่เสถียร

เปิดใช้เทมเพลต Gradle ที่กําหนดเอง

ไปที่การตั้งค่าโปรเจ็กต์ > Player > Android > การตั้งค่าการเผยแพร่ > บิลด์ และเปิดใช้ Custom Main Gradle Template และ Custom Gradle Properties Template

เปิดใช้เทมเพลต Gradle ที่กําหนดเอง

ตั้งค่าระดับ API เป้าหมายเป็น 34

จากเมนูหลัก ให้เปิดแก้ไข > การตั้งค่าโปรเจ็กต์ > โปรแกรมเล่น > Android > การตั้งค่าอื่นๆ แล้วตั้งค่าระดับ API เป้าหมายเป็นระดับ API 34 ขึ้นไป

ตั้งค่าระดับ API เป้าหมาย

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

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

ส่งออกโปรเจ็กต์

เปิด Android Studio

ส่วนนี้มีขั้นตอนที่ดำเนินการภายใน Android Studio

อัปเดตการกำหนดค่า JDK ของ Gradle

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

อัปเดตการกำหนดค่า JDK ของ Gradle

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

อัปเดต build.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
}

อัปเดต /gradle/gradle-wrapper.properties

ตั้งค่า distributionUrl ให้ใช้ Gradle 8.1.1 ขึ้นไป

distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip

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

จาก Android Studio ให้เรียกใช้การซิงค์ Gradle และเรียกใช้โปรเจ็กต์

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

โปรดตรวจสอบว่าคุณมีสิ่งต่อไปนี้ก่อนที่จะดำเนินการต่อ

  • ดาวน์โหลดและติดตั้ง Android Studio เวอร์ชันล่าสุดที่เสถียร

เปิดใช้เทมเพลต Gradle ที่กําหนดเอง

ไปที่การตั้งค่าโปรเจ็กต์ > Player > Android > การตั้งค่าการเผยแพร่ > บิลด์ และเปิดใช้ Custom Main Gradle Template และ Custom Gradle Properties Template

เปิดใช้เทมเพลต Gradle ที่กําหนดเอง

ตั้งค่าระดับ API เป้าหมายเป็น 34

จากเมนูหลัก ให้เปิดแก้ไข > การตั้งค่าโปรเจ็กต์ > โปรแกรมเล่น > Android > การตั้งค่าอื่นๆ แล้วตั้งค่าระดับ API เป้าหมายเป็นระดับ API 34 ขึ้นไป

ตั้งค่าระดับ API เป้าหมาย

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

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

ส่งออกโปรเจ็กต์

หากคุณได้รับคำเตือนว่าไม่มี API แพลตฟอร์ม Android SDK ระดับ 34 ให้เลือกตัวเลือก "อัปเดต Android SDK"

เปิด Android Studio

ส่วนนี้มีขั้นตอนที่ดำเนินการภายใน Android Studio

อัปเดตการกำหนดค่า JDK ของ Gradle

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

อัปเดตการกำหนดค่า JDK ของ Gradle

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

อัปเดต build.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
}

อัปเดต /gradle/gradle-wrapper.properties

ตั้งค่า distributionUrl ให้ใช้ Gradle 8.1.1 ขึ้นไป

distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip

อัปเดต launcher/build.gradle

  • ตั้งค่าแอตทริบิวต์ namespace โดยใช้ค่าของแอตทริบิวต์ package จาก launcher/AndroidManifest.xml
  • ตั้งค่า sourceCompatibility และ targetCompatibility เป็น Java 17

apply plugin: 'com.android.application'

dependencies {
    implementation project(':unityLibrary')
}

android {
    namespace "com.google.android.gms.example"
    compileSdkVersion 35
    buildToolsVersion '35.0.0'

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }

    defaultConfig {
        minSdkVersion 28
        targetSdkVersion 35
        applicationId 'com.google.android.gms.example'
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
        }
        versionCode 1
        versionName '1.0'
    }

    aaptOptions {
        noCompress = ['.unity3d', '.ress', '.resource', '.obb', '.bundle', '.unityexp']
        ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~"
    }

    lintOptions {
        abortOnError false
    }

    buildTypes {
        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt')
            signingConfig signingConfigs.debug
            jniDebuggable true
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt')
            signingConfig signingConfigs.debug
        }
    }

    packagingOptions {
        doNotStrip '*/armeabi-v7a/*.so'
        doNotStrip '*/arm64-v8a/*.so'
        doNotStrip '*/x86/*.so'
        doNotStrip '*/x86_64/*.so'
        jniLibs {
            useLegacyPackaging true
        }
    }

    bundle {
        language {
            enableSplit = false
        }
        density {
            enableSplit = false
        }
        abi {
            enableSplit = true
        }
    }
}

apply from: '../unityLibrary/GoogleMobileAdsPlugin.androidlib/packaging_options.gradle'

อัปเดต settings.gradle ระดับโปรเจ็กต์

ตั้งค่าส่วน pluginManagement และ dependencyResolutionManagement


pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}

include ':launcher', ':unityLibrary'
include 'unityLibrary:GoogleMobileAdsPlugin.androidlib'

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
    repositories {

        google()
        mavenCentral()
        flatDir {
            dirs "${project(':unityLibrary').projectDir}/libs"
        }
    }
}

อัปเดต unityLibrary/build.gradle

  • ตั้งค่า namespace เป็นค่า "com.unity3d.player"
  • ตั้งค่า sourceCompatibility และ targetCompatibility เป็น JavaVersion.VERSION_17

    apply plugin: 'com.android.library'

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        // Android Resolver Dependencies Start
        implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
        implementation 'com.google.android.gms:play-services-ads:23.6.0'
        implementation 'com.google.android.ump:user-messaging-platform:3.1.0'
        // Android Resolver Dependencies End
        implementation(name: 'googlemobileads-unity', ext:'aar')
        implementation project('GoogleMobileAdsPlugin.androidlib')
    }

    // Android Resolver Exclusions Start
    android {
      packagingOptions {
          exclude ('/lib/armeabi/*' + '*')
          exclude ('/lib/mips/*' + '*')
          exclude ('/lib/mips64/*' + '*')
          exclude ('/lib/x86/*' + '*')
      }
    }
    // Android Resolver Exclusions End

    android {
        namespace "com.unity3d.player"
        compileSdkVersion 34
        buildToolsVersion '30.0.2'

        compileOptions {
            sourceCompatibility JavaVersion.VERSION_17
            targetCompatibility JavaVersion.VERSION_17
        }

        defaultConfig {
            minSdkVersion 28
            targetSdkVersion 34
            ndk {
                abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86_64'
            }
            versionCode 1
            versionName '1.0'
            consumerProguardFiles 'proguard-unity.txt'
        }

        lintOptions {
            abortOnError false
        }

        aaptOptions {
            ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~"
        }

        packagingOptions {
            doNotStrip '*/armeabi-v7a/*.so'
            doNotStrip '*/arm64-v8a/*.so'
            doNotStrip '*/x86_64/*.so'
        }
    }


    apply from: 'GoogleMobileAdsPlugin.androidlib/packaging_options.gradle'
    gradle.projectsEvaluated { apply from: 'GoogleMobileAdsPlugin.androidlib/validate_dependencies.gradle' }

อัปเดต unity/Library/GoogleMobileAdsPlugin.androidlib/build.gradle

ตั้งค่าแอตทริบิวต์ namespace เป็นค่า "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 34
    buildToolsVersion '30.0.2'
    defaultConfig {
        targetSdkVersion 31
    }

    lintOptions {
        abortOnError false
    }
}

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

จาก Android Studio ให้เรียกใช้การซิงค์ Gradle และเรียกใช้โปรเจ็กต์