Compatibilidad de Unity Editor con Android

El editor de Unity tiene una versión bloqueada a una versión específica de Gradle, que puede entrar en conflicto con las dependencias que requieren paquetes de Android más recientes, como Google Mobile Ads. En la siguiente guía, se explica cómo producir una compilación de Android en versiones anteriores del editor de Unity.

En la siguiente tabla, se recomienda la versión máxima compatible del complemento Google Mobile Ads que debes usar según tu editor de Unity.

Editor de Unity Versión recomendada del complemento Google Mobile Ads para Unity
2023.1 o una versión posterior Más reciente
2021.3.41f1 - 2022.3 9.1.0
2021.3.37f1 o una versión anterior 8.5.3

Requisitos previos

Actualiza la configuración de compilación de 2022.3 y versiones anteriores

Unity 2022.3 y versiones anteriores requieren cambios en la configuración de compilación antes de exportar a Android Studio.

Genera el archivo baseProjectTemplate.gradle

  1. Habilita las plantillas de Gradle personalizadas. Ve a Project Settings > Player > Android > Publishing Settings > Build y selecciona Custom Base Gradle Template. Esto genera el archivo Plugins/Android/baseProjectTemplate.gradle.

  2. Modifica el archivo Plugins/Android/baseProjectTemplate.gradle para usar las herramientas de Gradle versión 8.1.1 o una posterior.

    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
    }
    

Cambios adicionales para Unity 2021.3.37f1 y versiones anteriores

Unity 2021.3.37f1 y versiones anteriores requieren cambios adicionales para actualizar la compatibilidad a Gradle 8.1.1. Completa los siguientes pasos:

Genera launcherTemplate.gradle

  1. Ve a Project Settings > Player > Android > Publishing Settings > Build y selecciona Launcher Gradle Template. Esto genera el archivo Plugins/Android/launcherTemplate.gradle.

  2. Modifica Plugins/Android/launcherTemplate.gradle para incluir el atributo de espacio de nombres. El valor del atributo del espacio de nombres debe coincidir con el atributo del paquete que se encuentra en el archivo AndroidManifest.xml del módulo del selector.

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

Genera mainTemplate.gradle

  1. Ve a Project Settings > Player > Android > Publishing Settings > Build y selecciona Main Gradle Template. Esto genera el archivo Plugins/Android/mainTemplate.gradle.

.

  1. Modifica Plugins/Android/mainTemplate.gradle para incluir el atributo de espacio de nombres con el valor com.unity3d.player.

    android {
        namespace 'com.unity3d.player'
    }
    

Cómo exportar a Android Studio

  1. Modifica la configuración de compilación de Android para exportar el proyecto de Unity.

  2. Para exportar a Android Studio, modifica la configuración de compilación de Android. Selecciona File (o Unity Editor en macOS) > Build Settings y marca Export Project:

  3. Presiona el botón Export en la parte inferior del diálogo Build Settings. Unity genera un proyecto de Android en la ubicación seleccionada.

  4. Abre el proyecto exportado en Android Studio.

Actualiza la configuración de Gradle JDK para usar JDK 17

  1. En Android Studio, abre la configuración de Gradle desde File (o Android Studio en macOS) > Settings > Build, Execution, Deployment > Build Tools > Gradle.
  2. Busca el menú desplegable Gradle JDK. Modifica el JDK de Gradle para usar JDK 17.

    Si no tienes JDK 17 instalado, selecciona la opción Download JDK en el menú desplegable de Gradle JDK y descarga una versión compatible. Te recomendamos que uses el proveedor del entorno de ejecución de JetBrains con compatibilidad con arch64 para que coincida con lo que distribuye Android Studio.

Actualiza los archivos del wrapper de Gradle

Modifica el parámetro distributionUrl dentro de gradle/wrapper/gradle-wrapper.properties para usar Gradle 8.0.1 o una versión posterior.

   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

Cambios adicionales de Android Studio para Unity 2021.3.37f1 y versiones anteriores

Unity 2021.3.37f1 y versiones anteriores requieren cambios adicionales para actualizar la compatibilidad a Gradle 8.1.1. Completa los siguientes pasos:

  1. Modifica el gradle.properties y quita el atributo android.enableR8=false.

  2. Modifica unityLibrary/GoogleMobileAdsPlugin.androidlib/build.gradle y agrega un atributo de espacio de nombres con el valor "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
        }
    }
    

Ejecuta el proyecto de Android

Después de completar estos pasos, la aplicación de Unity estará lista. En Android Studio, ejecuta gradle sync y ejecuta el proyecto.