Compatibilità con Android di Unity Editor

Unity Editor è bloccato su una versione specifica di Gradle, che può entrare in conflitto con le dipendenze richieste dai pacchetti Android più recenti, come Google Mobile Ads. La seguente guida spiega come produrre una compilazione per Android su versioni precedenti di Unity Editor.

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

Unity Editor Versione consigliata del plug-in Unity per 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

Prerequisiti

Aggiornare le impostazioni di compilazione di 2022.3 e versioni precedenti

Unity 2022.3 e versioni precedenti richiedono modifiche alle impostazioni di compilazione prima dell'esportazione in Android Studio.

Genera il file baseProjectTemplate.gradle

  1. Attiva i modelli Gradle personalizzati. Vai a Impostazioni progetto > Player > Android > Impostazioni di pubblicazione > Build e seleziona: Modello Gradle base personalizzato. Viene generato il Plugins/Android/baseProjectTemplate.gradle file.

  2. Modifica il file Plugins/Android/baseProjectTemplate.gradle per utilizzare gli strumenti Gradle della versione 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
    }
    

Modifiche aggiuntive per Unity 2021.3.37f1 e versioni precedenti

Unity 2021.3.37f1 e versioni precedenti richiedono modifiche aggiuntive per eseguire l'upgrade della compatibilità a Gradle 8.1.1. Completa i seguenti passaggi:

Genera launcherTemplate.gradle

  1. Vai a Impostazioni progetto > Player > Android > Impostazioni di pubblicazione > Build e seleziona Modello Gradle del programma di avvio. Viene generato il Plugins/Android/launcherTemplate.gradle file.

  2. Modifica Plugins/Android/launcherTemplate.gradle in modo da includere l'attributo dello spazio dei nomi. Il valore dell'attributo dello spazio dei nomi deve corrispondere all'attributo del pacchetto trovato nel file AndroidManifest.xml del modulo di avvio.

    android {
        // TODO: Replace with your app's package name.
        namespace 'com.google.android.gms.example'
    }
    

Genera mainTemplate.gradle

  1. Vai a Impostazioni progetto > Player > Android > Impostazioni di pubblicazione > Build e seleziona Modello Gradle principale. Viene generato il Plugins/Android/mainTemplate.gradle file.

.

  1. Modifica Plugins/Android/mainTemplate.gradle in modo da includere l'attributo namespace con valore com.unity3d.player.

    android {
        namespace 'com.unity3d.player'
    }
    

Esportazione in Android Studio

  1. Modifica le impostazioni di compilazione Android per esportare il progetto Unity.

  2. Per esportare in Android Studio, modifica le impostazioni di compilazione di Android. Seleziona File (o Unity Editor su macOS) > Impostazioni di compilazione e seleziona Esporta progetto:

  3. Fai clic sul pulsante Esporta nella parte inferiore della finestra di dialogo Impostazioni di compilazione. Unity genera un progetto Android nella posizione selezionata.

  4. Apri il progetto esportato in Android Studio.

Aggiorna la configurazione JDK di Gradle per utilizzare JDK 17

  1. In Android Studio, apri le impostazioni di Gradle da File (o Android Studio su macOS) > Impostazioni > Build, esecuzione, dispiegamento > Strumenti di compilazione > Gradle.
  2. Individua il menu a discesa Gradle JDK. Modifica il JDK di Gradle in modo da utilizzare JDK 17.

    Se non hai installato JDK 17, seleziona l'opzione Scarica JDK dal menu a discesa JDK di Gradle e scarica una versione compatibile. Ti consigliamo di scegliere il fornitore del runtime JetBrains con il supporto di arch64, in modo che corrisponda a quello distribuito da Android Studio.

Aggiorna i file wrapper di Gradle

Modifica il parametro distributionUrl all'interno di gradle/wrapper/gradle-wrapper.properties per utilizzare Gradle 8.0.1 o versioni successive.

   distributionBase=GRADLE_USER_HOME
   distributionPath=wrapper/dists
   zipStoreBase=GRADLE_USER_HOME
   zipStorePath=wrapper/dists
   distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-bin.zip

Modifiche aggiuntive ad Android Studio per Unity 2021.3.37f1 e versioni precedenti

Unity 2021.3.37f1 e versioni precedenti richiedono modifiche aggiuntive per eseguire l'upgrade della compatibilità a Gradle 8.1.1. Completa i seguenti passaggi:

  1. Modifica l'attributo gradle.properties e rimuovi l'attributo android.enableR8=false.

  2. Modifica unityLibrary/GoogleMobileAdsPlugin.androidlib/build.gradle e aggiungi un attributo del namespace con 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 35
        buildToolsVersion '30.0.3'
        defaultConfig {
            targetSdkVersion 31
        }
    
        lintOptions {
            abortOnError false
        }
    }
    

Esegui il progetto Android

Al termine di questi passaggi, l'applicazione Unity è pronta. In Android Studio, esegui gradle sync e esegui il progetto.