Compila Unity para Android

El Editor de Unity tiene una versión bloqueada a una versión específica de Gradle. Las versiones anteriores de Unity Editor usan versiones anteriores de Gradle que no son compatibles con la versión más reciente de Google Mobile Ads.

En la siguiente tabla, se muestra 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 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

Puedes actualizar Gradle de forma manual para usar el complemento Google Mobile Ads para Unity más reciente, incluidos los editores de Unity anteriores. Para compilar Android, selecciona la versión del editor de Unity que prefieras:

Requisitos previos

Antes de continuar, asegúrate de tener lo siguiente:

Habilita las plantillas de Gradle personalizadas

Ve a Project Settings > Player > Android > Publishing Settings > Build y habilita Custom Main Gradle Template y Custom Gradle Properties Template.

Habilita las plantillas de Gradle personalizadas

Establece el nivel de API objetivo en 34

En el menú principal, abre Edit > Project Settings > Player > Android > Other Settings y establece el Target API Level en API Level 34 o una versión posterior.

Cómo establecer el nivel de API objetivo

Ejecuta el proyecto de Android

En Android Studio, ejecuta gradle sync y ejecuta el proyecto.

Requisitos previos

Antes de continuar, asegúrate de tener lo siguiente:

  • Descarga e instala la versión estable más reciente de Android Studio.

Habilita las plantillas de Gradle personalizadas

Ve a Project Settings > Player > Android > Publishing Settings > Build y habilita Custom Main Gradle Template y Custom Gradle Properties Template.

Habilita las plantillas de Gradle personalizadas

Establece el nivel de API objetivo en 34

En el menú principal, abre Edit > Project Settings > Player > Android > Other Settings y establece el Target API Level en API Level 34 o una versión posterior.

Cómo establecer el nivel de API objetivo

Cómo exportar a Android Studio

Para modificar la configuración de compilación de Android, selecciona File (o Unity Editor en macOS) > Build Settings y marca Export Project:

Exportar proyecto

Abre Android Studio.

Esta sección contiene los pasos que se realizan en Android Studio.

Actualiza la configuración de JDK de Gradle

Abre la configuración de Gradle desde File (o Android Studio en MacOS) > Settings > Build > Execution > Deployment > Build Tools > Gradle. Busca el menú desplegable Gradle JDK y configura Gradle JDK para que use JDK 17 o una versión posterior.

Actualiza la configuración de JDK de Gradle

Si no tienes JDK 17 instalado, selecciona las opciones Download JDK en la barra de menú de Gradle JDK y descarga una versión compatible. Te recomendamos el proveedor de tiempo de ejecución de JetBrains con compatibilidad con aarch64 para que coincida con lo que distribuye Android Studio.

Actualiza el archivo build.gradle a nivel del proyecto

Establece la versión de las herramientas de Gradle en 8.1.1 o una versión 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
}

Actualizar /gradle/gradle-wrapper.properties

Establece distributionUrl para usar Gradle 8.1.1 o una versión posterior.

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

Ejecuta el proyecto de Android

En Android Studio, ejecuta gradle sync y ejecuta el proyecto.

Requisitos previos

Antes de continuar, asegúrate de tener lo siguiente:

  • Descarga e instala la versión estable más reciente de Android Studio.

Habilita las plantillas de Gradle personalizadas

Ve a Project Settings > Player > Android > Publishing Settings > Build y habilita Custom Main Gradle Template y Custom Gradle Properties Template.

Habilita las plantillas de Gradle personalizadas

Establece el nivel de API objetivo en 34

En el menú principal, abre Edit > Project Settings > Player > Android > Other Settings y establece el Target API Level en API Level 34 o una versión posterior.

Cómo establecer el nivel de API objetivo

Cómo exportar a Android Studio

Para modificar la configuración de compilación de Android, selecciona File (o Unity Editor en macOS) > Build Settings y marca Export Project:

Exportar proyecto

Si recibes una advertencia de que falta el nivel 34 de la API de la plataforma del SDK de Android, selecciona la opción "Update Android SDK".

Abre Android Studio.

Esta sección contiene los pasos que se realizan en Android Studio.

Actualiza la configuración de JDK de Gradle

Abre la configuración de Gradle desde File (o Android Studio en MacOS) > Settings > Build > Execution > Deployment > Build Tools > Gradle. Busca el menú desplegable Gradle JDK y configura Gradle JDK para que use JDK 17 o una versión posterior.

Actualiza la configuración de JDK de Gradle

Si no tienes JDK 17 instalado, selecciona las opciones Download JDK en la barra de menú de Gradle JDK y descarga una versión compatible. Te recomendamos el proveedor de tiempo de ejecución de JetBrains con compatibilidad con aarch64 para que coincida con lo que distribuye Android Studio.

Actualiza el archivo build.gradle a nivel del proyecto

Establece la versión de las herramientas de Gradle en 8.1.1 o una versión 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
}

Actualizar /gradle/gradle-wrapper.properties

Establece distributionUrl para usar Gradle 8.1.1 o una versión posterior.

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

Actualizar launcher/build.gradle

  • Establece el atributo namespace con el valor del atributo package de launcher/AndroidManifest.xml.
  • Establece sourceCompatibility y targetCompatibility en 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'

Actualiza settings.gradle a nivel del proyecto

Establece las secciones pluginManagement y 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"
        }
    }
}

Actualiza unityLibrary/build.gradle

  • Establece namespace con el valor "com.unity3d.player".
  • Establece sourceCompatibility y targetCompatibility en 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' }

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

Establece el atributo namespace 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 34
    buildToolsVersion '30.0.2'
    defaultConfig {
        targetSdkVersion 31
    }

    lintOptions {
        abortOnError false
    }
}

Ejecuta el proyecto de Android

En Android Studio, ejecuta gradle sync y ejecuta el proyecto.