Mem-build Unity untuk Android

Unity Editor dikunci versinya ke versi Gradle tertentu. Versi Unity Editor yang lebih lama menggunakan versi Gradle yang lebih lama yang tidak kompatibel dengan Google Mobile Ads versi terbaru.

Untuk membuat Android, pilih versi Unity Editor yang Anda inginkan:

2023.1 atau yang lebih tinggi

Mengaktifkan pasca-pemroses build Gradle

Post-prosesor build Gradle diaktifkan secara default di Unity Editor 2021.3.41f1 dan yang lebih baru. Prosesor secara otomatis menerapkan semua setelan Gradle dan pemutar yang diperlukan untuk mendukung Google Mobile Ads SDK terbaru di Unity Editor versi sebelumnya.

Mengaktifkan pasca-pemroses build Gradle

Mengonfigurasi setelan Android dan Gradle secara manual

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 Level API Target

2021.3.41f1 - 2022.3

Mengaktifkan pasca-pemroses build Gradle

Post-prosesor build Gradle diaktifkan secara default di Unity Editor 2021.3.41f1 dan yang lebih baru. Prosesor secara otomatis menerapkan semua setelan Gradle dan pemutar yang diperlukan untuk mendukung Google Mobile Ads SDK terbaru di Unity Editor versi sebelumnya.

Mengaktifkan pasca-pemroses build Gradle

Mengonfigurasi setelan Android dan Gradle secara manual

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 Level API Target

Menambahkan daftar yang diabaikan jetifier ke `gradleTemplate.properties`

Edit Assets/Plugins/Android/gradleTemplate.properties dan tambahkan baris berikut:

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

Hapus `minSDKVersion` dari `AndroidManifest.xml`

Edit Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml dan hapus android:minSdkVersion="21" dari node uses-sdk . AndroidManifest.xml Anda akan terlihat seperti berikut:

<?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

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 Level API 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 level 34 platform Android SDK 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. Cari 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, lalu download versi yang kompatibel. Sebaiknya gunakan vendor JetBrains runtime dengan dukungan aarch64, agar sesuai dengan yang didistribusikan Android Studio.

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

Perbarui /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

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

Perbarui 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' }

Perbarui 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: ['<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
    }
}

Menjalankan Project Android

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