Compilare Unity per Android

L'editor di Unity è bloccato su una versione specifica di Gradle. Le versioni precedenti di Unity Editor utilizzano versioni precedenti di Gradle che non sono compatibili con l'ultima versione di Google Mobile Ads.

La tabella seguente mostra la versione massima del plug-in Google Mobile Ads compatibile da utilizzare in base a Unity Editor:

Unity Editor Versione del plug-in Unity di Google Mobile Ads
2023.1 o versioni successive Ultimi
2021.3.41f1 - 2022.3 9.1.0
2021.3.37f1 o versioni precedenti 8.5.3

Puoi aggiornare manualmente Gradle per utilizzare il plug-in Unity di Google Mobile Ads più recente, incluso gli editor Unity precedenti. Per compilare per Android, seleziona la versione di Unity Editor che preferisci:

2023.1 o versioni successive

Prerequisiti

Prima di continuare, assicurati di avere quanto segue:

Attivare i modelli Gradle personalizzati

Vai a Impostazioni progetto > Player > Android > Impostazioni di pubblicazione > Build e attiva Custom Main Gradle Template e Custom Gradle Properties Template.

Attivare i modelli Gradle personalizzati

Imposta il livello API target 34

Dal menu principale, apri Modifica > Impostazioni progetto > Player > Android > Altre impostazioni e imposta Livello API target su Livello API 34 o versioni successive.

Imposta il livello API target

Esegui il progetto Android

Da Android Studio, esegui gradle sync e esegui il progetto.

2021.3.4f1 - 2022.3

Prerequisiti

Prima di continuare, assicurati di avere quanto segue:

Attivare i modelli Gradle personalizzati

Vai a Impostazioni progetto > Player > Android > Impostazioni di pubblicazione > Build e attiva Custom Main Gradle Template e Custom Gradle Properties Template.

Attivare i modelli Gradle personalizzati

Imposta il livello API target 34

Dal menu principale, apri Modifica > Impostazioni progetto > Player > Android > Altre impostazioni e imposta Livello API target su Livello API 34 o versioni successive.

Imposta il livello API target

Esportazione in Android Studio

Modifica le impostazioni di compilazione di Android selezionando File (o Unity Editor su macOS) > Impostazioni di compilazione e selezionando Esporta progetto:

Esporta progetto

Apri Android Studio

Questa sezione contiene i passaggi eseguiti in Android Studio.

Aggiorna la configurazione JDK di Gradle

Apri le impostazioni di Gradle da File (o Android Studio su macOS) > Impostazioni > Build > Esecuzione > Deployment > Strumenti di compilazione > Gradle. Individua il menu a discesa Gradle JDK e imposta Gradle JDK in modo da utilizzare JDK 17 o versioni successive.

Aggiorna la configurazione JDK di Gradle

Se non hai installato JDK 17, seleziona le opzioni Scarica JDK dalla barra del menu JDK di Gradle e scarica una versione compatibile. Consigliamo il fornitore del runtime JetBrains con supporto aarch64, in modo che corrisponda a quello distribuito da Android Studio.

Aggiorna il file build.gradle a livello di progetto

Imposta la versione degli strumenti Gradle su 8.1.1 o successiva.


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
}

Aggiorna /gradle/gradle-wrapper.properties

Imposta distributionUrl per utilizzare Gradle 8.1.1 o versioni successive.

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

Esegui il progetto Android

Da Android Studio, esegui gradle sync e esegui il progetto.

2021.3.37f1 - 2019.4

Prerequisiti

Prima di continuare, assicurati di avere quanto segue:

Attivare i modelli Gradle personalizzati

Vai a Impostazioni progetto > Player > Android > Impostazioni di pubblicazione > Build e attiva Custom Main Gradle Template e Custom Gradle Properties Template.

Attivare i modelli Gradle personalizzati

Imposta il livello API target 34

Dal menu principale, apri Modifica > Impostazioni progetto > Player > Android > Altre impostazioni e imposta Livello API target su Livello API 34 o versioni successive.

Imposta il livello API target

Esportazione in Android Studio

Modifica le impostazioni di compilazione di Android selezionando File (o Unity Editor su macOS) > Impostazioni di compilazione e selezionando Esporta progetto:

Esporta progetto

Se ricevi un avviso che indica che manca il livello 34 dell'API della piattaforma SDK Android, seleziona l'opzione "Aggiorna SDK Android".

Apri Android Studio

Questa sezione contiene i passaggi eseguiti in Android Studio.

Aggiorna la configurazione JDK di Gradle

Apri le impostazioni di Gradle da File (o Android Studio su macOS) > Impostazioni > Build > Esecuzione > Deployment > Strumenti di compilazione > Gradle. Individua il menu a discesa Gradle JDK e imposta Gradle JDK in modo da utilizzare JDK 17 o versioni successive.

Aggiorna la configurazione JDK di Gradle

Se non hai installato JDK 17, seleziona le opzioni Scarica JDK dalla barra del menu JDK di Gradle e scarica una versione compatibile. Consigliamo il fornitore del runtime JetBrains con supporto aarch64, in modo che corrisponda a quello distribuito da Android Studio.

Aggiorna il file build.gradle a livello di progetto

Imposta la versione degli strumenti Gradle su 8.1.1 o successiva.


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
}

Aggiorna /gradle/gradle-wrapper.properties

Imposta distributionUrl per utilizzare Gradle 8.1.1 o versioni successive.

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

Aggiorna launcher/build.gradle

  • Imposta l'attributo namespace utilizzando il valore dell'attributo package di launcher/AndroidManifest.xml
  • Imposta sourceCompatibility e targetCompatibility su 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'

Aggiorna settings.gradle a livello di progetto

Imposta le sezioni pluginManagement e 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"
        }
    }
}

Aggiorna unityLibrary/build.gradle

  • Imposta namespace con il valore "com.unity3d.player"
  • Imposta sourceCompatibility e targetCompatibility su 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' }

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

Imposta l'attributo namespace con il valore "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
    }
}

Esegui il progetto Android

Da Android Studio, esegui gradle sync e esegui il progetto.