Mem-build Unity untuk Android

Editor Unity terkunci versi ke versi Gradle tertentu. Unity Editor versi sebelumnya menggunakan Gradle versi sebelumnya yang tidak kompatibel dengan Google Mobile Ads versi terbaru.

Tabel berikut menunjukkan versi plugin Google Mobile Ads yang kompatibel maksimum untuk digunakan berdasarkan Unity Editor Anda:

Unity Editor Versi plugin Google Mobile Ads Unity
2023.1 atau yang lebih tinggi Terbaru
2021.3.41f1 - 2022.3 9.1.0
2021.3.37f1 atau yang lebih lama 8.5.3

Anda dapat mengupdate Gradle secara manual untuk menggunakan plugin Google Mobile Ads Unity terbaru, termasuk Unity Editor yang lebih lama. Untuk mem-build Android, pilih versi Unity Editor yang Anda inginkan:

Prasyarat

Sebelum melanjutkan, pastikan Anda memiliki hal berikut:

Mengaktifkan Template Gradle Kustom

Buka Project Settings > Player > Android > Publishing Settings > Build dan aktifkan Custom Main Gradle Template dan Custom Gradle Properties Template.

Mengaktifkan Template Gradle Kustom

Menetapkan Level API Target 34

Dari menu utama, buka Edit > Project Settings > Player > Android > Other Settings dan tetapkan Target API Level ke API Level 34 atau yang lebih tinggi.

Menetapkan API Level Target

Menjalankan Project Android

Dari Android Studio, jalankan sinkronisasi gradle, dan jalankan project.

Prasyarat

Sebelum melanjutkan, pastikan Anda memiliki hal berikut:

Mengaktifkan Template Gradle Kustom

Buka Project Settings > Player > Android > Publishing Settings > Build dan aktifkan Custom Main Gradle Template dan Custom Gradle Properties Template.

Mengaktifkan Template Gradle Kustom

Menetapkan Level API Target 34

Dari menu utama, buka Edit > Project Settings > Player > Android > Other Settings dan tetapkan Target API Level ke API Level 34 atau yang lebih tinggi.

Menetapkan API Level Target

Mengekspor ke Android Studio

Ubah setelan build Android dengan memilih File (atau Unity Editor di MacOS) > Build Settings dan centang Export Project:

Mengekspor Project

Membuka Android Studio

Bagian ini berisi langkah-langkah yang dilakukan dalam Android Studio.

Memperbarui konfigurasi JDK Gradle

Buka setelan Gradle dari File (atau Android Studio di MacOS) > Settings > Build > Execution > Deployment > Build Tools > Gradle. Temukan drop-down Gradle JDK dan tetapkan Gradle JDK untuk menggunakan JDK 17 atau yang lebih baru.

Memperbarui konfigurasi JDK Gradle

Jika Anda belum menginstal JDK 17, pilih opsi Download JDK dari panel menu Gradle JDK dan download versi yang kompatibel. Sebaiknya gunakan vendor runtime JetBrains dengan dukungan aarch64, agar cocok dengan yang didistribusikan Android Studio.

Mengupdate build.gradle level project

Tetapkan versi alat Gradle ke 8.1.1 atau yang lebih baru.


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
}

Mengupdate /gradle/gradle-wrapper.properties

Tetapkan distributionUrl untuk menggunakan Gradle 8.1.1 atau yang lebih baru.

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

Menjalankan Project Android

Dari Android Studio, jalankan sinkronisasi gradle, dan jalankan project.

Prasyarat

Sebelum melanjutkan, pastikan Anda memiliki hal berikut:

Mengaktifkan Template Gradle Kustom

Buka Project Settings > Player > Android > Publishing Settings > Build dan aktifkan Custom Main Gradle Template dan Custom Gradle Properties Template.

Mengaktifkan Template Gradle Kustom

Menetapkan Level API Target 34

Dari menu utama, buka Edit > Project Settings > Player > Android > Other Settings dan tetapkan Target API Level ke API Level 34 atau yang lebih tinggi.

Menetapkan API Level Target

Mengekspor ke Android Studio

Ubah setelan build Android dengan memilih File (atau Unity Editor di MacOS) > Build Settings dan centang Export Project:

Mengekspor Project

Jika Anda menerima peringatan bahwa API platform Android SDK level 34 tidak ada, pilih opsi 'Update Android SDK'.

Membuka Android Studio

Bagian ini berisi langkah-langkah yang dilakukan dalam Android Studio.

Memperbarui konfigurasi JDK Gradle

Buka setelan Gradle dari File (atau Android Studio di MacOS) > Settings > Build > Execution > Deployment > Build Tools > Gradle. Temukan drop-down Gradle JDK dan tetapkan Gradle JDK untuk menggunakan JDK 17 atau yang lebih baru.

Memperbarui konfigurasi JDK Gradle

Jika Anda belum menginstal JDK 17, pilih opsi Download JDK dari panel menu Gradle JDK dan download versi yang kompatibel. Sebaiknya gunakan vendor runtime JetBrains dengan dukungan aarch64, agar cocok dengan yang didistribusikan Android Studio.

Mengupdate build.gradle level project

Tetapkan versi alat Gradle ke 8.1.1 atau yang lebih baru.


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
}

Mengupdate /gradle/gradle-wrapper.properties

Tetapkan distributionUrl untuk menggunakan Gradle 8.1.1 atau yang lebih baru.

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

Mengupdate launcher/build.gradle

  • Tetapkan atribut namespace menggunakan nilai atribut package dari launcher/AndroidManifest.xml
  • Tetapkan sourceCompatibility dan targetCompatibility ke 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'

Memperbarui settings.gradle tingkat project

Tetapkan bagian pluginManagement dan 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"
        }
    }
}

Mengupdate unityLibrary/build.gradle

  • Tetapkan namespace dengan nilai "com.unity3d.player"
  • Tetapkan sourceCompatibility dan targetCompatibility ke 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' }

Update unity/Library/GoogleMobileAdsPlugin.androidlib/build.gradle

Tetapkan atribut namespace dengan nilai "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
    }
}

Menjalankan Project Android

Dari Android Studio, jalankan sinkronisasi gradle, dan jalankan project.