Xây dựng Unity cho Android

Unity Editor được khoá phiên bản cho một phiên bản cụ thể của Gradle. Các phiên bản cũ của Unity Editor sử dụng các phiên bản cũ của Gradle không tương thích với phiên bản mới nhất của Quảng cáo trên thiết bị di động của Google.

Để tạo Android, hãy chọn phiên bản Trình chỉnh sửa Unity mà bạn muốn:

2023.1 trở lên

Bật trình xử lý bài đăng bản dựng Gradle

Trình xử lý hậu kỳ bản dựng Gradle được bật theo mặc định trong Unity Editor 2021.3.41f1 trở lên. Trình xử lý sẽ tự động áp dụng tất cả các chế độ cài đặt cần thiết của Gradle và trình phát để hỗ trợ SDK Quảng cáo của Google trên thiết bị di động mới nhất trên các phiên bản cũ hơn của Unity Editor.

Bật trình xử lý bài đăng bản dựng Gradle

Định cấu hình chế độ cài đặt Android và Gradle theo cách thủ công

Bật mẫu Gradle tuỳ chỉnh

Chuyển đến Project Settings > Player > Android > Publishing Settings > Build (Cài đặt dự án > Trình phát > Android > Cài đặt xuất bản > Bản dựng) và bật Custom Main Gradle TemplateCustom Gradle Properties Template.

Bật mẫu Gradle tuỳ chỉnh

Đặt cấp độ API mục tiêu là 34

Trên trình đơn chính, hãy mở Edit > Project Settings > Player > Android > Other Settings (Chỉnh sửa > Cài đặt dự án > Trình phát > Android > Cài đặt khác) rồi đặt Target API Level (Cấp độ API mục tiêu) thành API Level 34 (Cấp độ API 34) trở lên.

Đặt cấp độ API mục tiêu

2021.3.41f1 – 2022.3

Bật trình xử lý bài đăng bản dựng Gradle

Trình xử lý hậu kỳ bản dựng Gradle được bật theo mặc định trong Unity Editor 2021.3.41f1 trở lên. Trình xử lý sẽ tự động áp dụng tất cả các chế độ cài đặt cần thiết của Gradle và trình phát để hỗ trợ SDK Quảng cáo của Google trên thiết bị di động mới nhất trên các phiên bản cũ hơn của Unity Editor.

Bật trình xử lý bài đăng bản dựng Gradle

Định cấu hình chế độ cài đặt Android và Gradle theo cách thủ công

Bật mẫu Gradle tuỳ chỉnh

Chuyển đến Project Settings > Player > Android > Publishing Settings > Build (Cài đặt dự án > Trình phát > Android > Cài đặt xuất bản > Bản dựng) và bật Custom Main Gradle TemplateCustom Gradle Properties Template.

Bật mẫu Gradle tuỳ chỉnh

Đặt cấp độ API mục tiêu là 34

Trên trình đơn chính, hãy mở Edit > Project Settings > Player > Android > Other Settings (Chỉnh sửa > Cài đặt dự án > Trình phát > Android > Cài đặt khác) rồi đặt Target API Level (Cấp độ API mục tiêu) thành API Level 34 (Cấp độ API 34) trở lên.

Đặt cấp độ API mục tiêu

Thêm danh sách bỏ qua jetifier vào "gradleTemplate.properties"

Chỉnh sửa Assets/Plugins/Android/gradleTemplate.properties và thêm dòng sau:

  android.jetifier.ignorelist=annotation-experimental-1.4.0.aar

Xoá "minSDKVersion" khỏi "AndroidManifest.xml"

Chỉnh sửa Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml và xoá android:minSdkVersion="21" khỏi nút uses-sdk . AndroidManifest.xml của bạn sẽ có dạng như sau:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.google.unity.ads"
    android:versionName="1.0"
    android:versionCode="1">
  <uses-sdk />
  <application>
    <uses-library android:required="false" android:name="org.apache.http.legacy"/>
  </application>
</manifest>

2019.4 – 2021.3.37f1

Điều kiện tiên quyết

Trước khi tiếp tục, hãy đảm bảo bạn có những thông tin sau:

  • Tải xuống và cài đặt phiên bản ổn định mới nhất của Android Studio.

Bật mẫu Gradle tuỳ chỉnh

Chuyển đến Project Settings > Player > Android > Publishing Settings > Build (Cài đặt dự án > Trình phát > Android > Cài đặt xuất bản > Bản dựng) và bật Custom Main Gradle TemplateCustom Gradle Properties Template.

Bật mẫu Gradle tuỳ chỉnh

Đặt cấp độ API mục tiêu là 34

Trên trình đơn chính, hãy mở Edit > Project Settings > Player > Android > Other Settings (Chỉnh sửa > Cài đặt dự án > Trình phát > Android > Cài đặt khác) rồi đặt Target API Level (Cấp độ API mục tiêu) thành API Level 34 (Cấp độ API 34) trở lên.

Đặt cấp độ API mục tiêu

Xuất sang Android Studio

Sửa đổi chế độ cài đặt bản dựng Android bằng cách chọn File (Tệp) (hoặc Unity Editor trên MacOS) > Build Settings (Cài đặt bản dựng) rồi đánh dấu vào Export Project (Xuất dự án):

Xuất dự án

Nếu bạn nhận được cảnh báo rằng thiếu API nền tảng SDK Android cấp 34, hãy chọn mục "Cập nhật SDK Android".

Mở Android Studio

Phần này chứa các bước được thực hiện trong Android Studio.

Cập nhật cấu hình Gradle JDK

Mở phần cài đặt Gradle từ File (Tệp) (hoặc Android Studio trên MacOS) > Settings (Cài đặt) > Build (Xây dựng) > Execution (Thực thi) > Deployment (Triển khai) > Build Tools (Công cụ xây dựng) > Gradle. Tìm trình đơn thả xuống Gradle JDK rồi đặt Gradle JDK để sử dụng JDK 17 trở lên.

Cập nhật cấu hình Gradle JDK

Nếu bạn chưa cài đặt JDK 17, hãy chọn mục Download JDK (Tải JDK xuống) trong thanh trình đơn Gradle JDK rồi tải một phiên bản tương thích xuống. Bạn nên sử dụng nhà cung cấp thời gian chạy JetBrains có hỗ trợ aarch64, để phù hợp với những gì Android Studio phân phối.

Cập nhật tệp build.gradle cấp dự án

Đặt phiên bản công cụ Gradle thành 8.1.1 trở lên.

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
}

Cập nhật /gradle/gradle-wrapper.properties

Đặt distributionUrl để sử dụng Gradle 8.1.1 trở lên.

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

Cập nhật launcher/build.gradle

  • Đặt thuộc tính namespace bằng giá trị của thuộc tính package trong launcher/AndroidManifest.xml
  • Đặt sourceCompatibilitytargetCompatibility thành 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'

Cập nhật settings.gradle ở cấp dự án

Đặt các phần pluginManagementdependencyResolutionManagement.

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"
        }
    }
}

Cập nhật unityLibrary/build.gradle

  • Đặt namespace với giá trị "com.unity3d.player"
  • Đặt sourceCompatibilitytargetCompatibility thành 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' }

Cập nhật unity/Library/GoogleMobileAdsPlugin.androidlib/build.gradle

Đặt thuộc tính namespace với giá trị "com.google.unity.ads".

apply plugin: 'android-library'

dependencies {
    implementation fileTree(dir: 'bin', include: ['<em>.jar'])
    implementation fileTree(dir: 'libs', include: ['</em>.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
    }
}

Chạy dự án Android

Trong Android Studio, hãy chạy tính năng đồng bộ hoá gradlechạy dự án.