Unity Editor está bloqueado en 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 del complemento de anuncios de Google para dispositivos móviles.
Para compilar para Android, selecciona la versión de Unity Editor que prefieras:
2023.1 o posterior
Habilita el preprocesador de compilación de Gradle
El preprocesador de compilación de Gradle está habilitado de forma predeterminada en Unity Editor 2021.3.41f1 y versiones posteriores. El procesador aplica automáticamente todos los ajustes necesarios de Gradle y del reproductor para admitir el complemento de anuncios de Google para dispositivos móviles para Unity más reciente en versiones anteriores de Unity Editor.
Establece manualmente los parámetros de configuración de Android y Gradle
Habilita las plantillas personalizadas de Gradle
Ve a Project Settings > Player > Android > Publishing Settings > Build y habilita Custom Main Gradle Template y Custom Gradle Properties Template.
Establece el nivel de API objetivo en 34
En el menú principal, abre Edit (Editar) > Project Settings (Configuración del proyecto) > Player (Reproductor) > Android > Other Settings (Otros parámetros de configuración) y establece el valor de Target API Level (Nivel de API objetivo) en API Level 34 (Nivel de API 34) o uno superior.
2021.3.41f1 - 2022.3
Habilita el preprocesador de compilación de Gradle
El preprocesador de compilación de Gradle está habilitado de forma predeterminada en Unity Editor 2021.3.41f1 y versiones posteriores. El procesador aplica automáticamente todos los ajustes necesarios de Gradle y del reproductor para admitir el complemento de anuncios de Google para dispositivos móviles para Unity más reciente en versiones anteriores de Unity Editor.
Establece manualmente los parámetros de configuración de Android y Gradle
Habilita las plantillas personalizadas de Gradle
Ve a Project Settings > Player > Android > Publishing Settings > Build y habilita Custom Main Gradle Template y Custom Gradle Properties Template.
Establece el nivel de API objetivo en 34
En el menú principal, abre Edit (Editar) > Project Settings (Configuración del proyecto) > Player (Reproductor) > Android > Other Settings (Otros parámetros de configuración) y establece el valor de Target API Level (Nivel de API objetivo) en API Level 34 (Nivel de API 34) o uno superior.
Agrega la lista de elementos ignorados de Jetifier a "gradleTemplate.properties"
Edita Assets/Plugins/Android/gradleTemplate.properties y agrega la siguiente línea:
android.jetifier.ignorelist=annotation-experimental-1.4.0.aar
Quita "minSDKVersion" de "AndroidManifest.xml"
Edita Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml y quita android:minSdkVersion="21" del nodo uses-sdk .
Tu archivo AndroidManifest.xml debería verse de la siguiente manera:
<?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
Requisitos previos
Antes de continuar, asegúrate de haber hecho lo siguiente:
- Descarga e instala la versión estable más reciente de Android Studio.
- Opcional: Para obtener detalles sobre la compilación para Android, consulta Versiones de Java en compilaciones de Android.
Habilita las plantillas personalizadas de Gradle
Ve a Project Settings > Player > Android > Publishing Settings > Build y habilita Custom Main Gradle Template y Custom Gradle Properties Template.
Establece el nivel de API objetivo en 34
En el menú principal, abre Edit (Editar) > Project Settings (Configuración del proyecto) > Player (Reproductor) > Android > Other Settings (Otros parámetros de configuración) y establece el valor de Target API Level (Nivel de API objetivo) en API Level 34 (Nivel de API 34) o uno superior.
Realiza exportaciones a Android Studio
Para modificar la configuración de la compilación de Android, selecciona File (o Unity Editor en macOS) > Build Settings y marca Export Project:
Si recibes una advertencia que indica que falta el nivel de API 34 en la plataforma del SDK de Android, selecciona la opción "Update Android SDK".
Abre Android Studio
En esta sección, se incluyen los pasos que se realizan en Android Studio.
Actualiza la configuración del 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 (JDK de Gradle) y configura el JDK de Gradle para que use JDK 17 o una versión superior.
Si no tienes instalado el JDK 17, selecciona las opciones de Download JDK (Descargar el JDK) en la barra de menú de Gradle JDK (JDK de Gradle) y descarga una versión compatible. Recomendamos el proveedor de JetBrains Runtime 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 superior.
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 }
Actualiza /gradle/gradle-wrapper.properties
Establece distributionUrl para que use Gradle 8.1.1 o posterior.
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
Actualiza launcher/build.gradle
- Configura el atributo
namespacecon el valor del atributopackagedelauncher/AndroidManifest.xml. - Establece
sourceCompatibilityytargetCompatibilityen 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
Se establecieron 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
namespacecon el valor"com.unity3d.player". - Establece
sourceCompatibilityytargetCompatibilityenJavaVersion.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: ['<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 } }
Ejecuta el proyecto de Android
En Android Studio, ejecuta la sincronización de Gradle y ejecuta el proyecto.