Compiler Unity pour Android

L'éditeur Unity est verrouillé sur une version spécifique de Gradle. Les versions antérieures de l'éditeur Unity utilisent des versions antérieures de Gradle, qui sont incompatibles avec la dernière version de Google Mobile Ads.

Pour créer Android, sélectionnez la version de l'éditeur Unity de votre choix :

2023.1 ou version ultérieure

Activer le post-processeur de compilation Gradle

Le post-processeur de compilation Gradle est activé par défaut dans l'éditeur Unity 2021.3.41f1 et versions ultérieures. Le processeur applique automatiquement tous les paramètres Gradle et du lecteur nécessaires pour prendre en charge la dernière version du SDK Google Mobile Ads sur les versions antérieures de l'éditeur Unity.

Activer le post-processeur de compilation Gradle

Configurer manuellement les paramètres Android et Gradle

Activer les modèles Gradle personnalisés

Accédez à Project Settings > Player > Android > Publishing Settings > Build (Paramètres du projet > Lecteur > Android > Paramètres de publication > Créer) et activez Custom Main Gradle Template et Custom Gradle Properties Template.

Activer les modèles Gradle personnalisés

Définir le niveau d'API cible sur 34

Dans le menu principal, ouvrez Edit > Project Settings > Player > Android > Other Settings (Modifier > Paramètres du projet > Lecteur > Android > Autres paramètres), puis définissez le niveau d'API cible sur niveau d'API 34 ou supérieur.

Définir le niveau d'API cible

2021.3.41f1 - 2022.3

Activer le post-processeur de compilation Gradle

Le post-processeur de compilation Gradle est activé par défaut dans l'éditeur Unity 2021.3.41f1 et versions ultérieures. Le processeur applique automatiquement tous les paramètres Gradle et du lecteur nécessaires pour prendre en charge la dernière version du SDK Google Mobile Ads sur les versions antérieures de l'éditeur Unity.

Activer le post-processeur de compilation Gradle

Configurer manuellement les paramètres Android et Gradle

Activer les modèles Gradle personnalisés

Accédez à Project Settings > Player > Android > Publishing Settings > Build (Paramètres du projet > Lecteur > Android > Paramètres de publication > Créer) et activez Custom Main Gradle Template et Custom Gradle Properties Template.

Activer les modèles Gradle personnalisés

Définir le niveau d'API cible sur 34

Dans le menu principal, ouvrez Edit > Project Settings > Player > Android > Other Settings (Modifier > Paramètres du projet > Lecteur > Android > Autres paramètres), puis définissez le niveau d'API cible sur niveau d'API 34 ou supérieur.

Définir le niveau d'API cible

Ajouter la liste des éléments à ignorer de Jetifier à `gradleTemplate.properties`

Modifiez Assets/Plugins/Android/gradleTemplate.properties et ajoutez la ligne suivante :

  android.jetifier.ignorelist=annotation-experimental-1.4.0.aar

Supprimer `minSDKVersion` de `AndroidManifest.xml`

Modifiez Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml et supprimez android:minSdkVersion="21" du nœud uses-sdk . Votre AndroidManifest.xml devrait se présenter comme suit :

<?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

Prérequis

Avant de continuer, assurez-vous de disposer des éléments suivants :

  • Téléchargez et installez la dernière version stable d'Android Studio.

Activer les modèles Gradle personnalisés

Accédez à Project Settings > Player > Android > Publishing Settings > Build (Paramètres du projet > Lecteur > Android > Paramètres de publication > Créer) et activez Custom Main Gradle Template et Custom Gradle Properties Template.

Activer les modèles Gradle personnalisés

Définir le niveau d'API cible sur 34

Dans le menu principal, ouvrez Edit > Project Settings > Player > Android > Other Settings (Modifier > Paramètres du projet > Lecteur > Android > Autres paramètres), puis définissez le niveau d'API cible sur niveau d'API 34 ou supérieur.

Définir le niveau d&#39;API cible

Exporter vers Android Studio

Modifiez les paramètres de compilation Android en sélectionnant File (ou Unity Editor sur MacOS) > Build Settings (Fichier (ou Unity Editor sur MacOS) > Paramètres de compilation), puis cochez la case "Export Project" (Exporter le projet) :

Exporter un projet

Si vous recevez un avertissement indiquant que le niveau d'API 34 de la plate-forme Android SDK est manquant, sélectionnez l'option Mettre à jour Android SDK.

Ouvrir Android Studio

Cette section contient les étapes à effectuer dans Android Studio.

Mettre à jour la configuration JDK de Gradle

Ouvrez les paramètres Gradle en accédant à File (ou Android Studio sous macOS) > Settings > Build > Execution > Deployment > Build Tools > Gradle. Localisez le menu déroulant Gradle JDK et définissez le JDK Gradle pour qu'il utilise JDK 17 ou une version ultérieure.

Mettre à jour la configuration JDK de Gradle

Si vous n'avez pas installé JDK 17, sélectionnez les options Download JDK (Télécharger JDK) dans la barre de menu Gradle JDK et téléchargez une version compatible. Nous vous recommandons le fournisseur JetBrains Runtime avec prise en charge d'aarch64, pour correspondre à ce qu'Android Studio distribue.

Mettre à jour le fichier build.gradle au niveau du projet

Définissez la version des outils Gradle sur 8.1.1 ou une version ultérieure.

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
}

Mettre à jour /gradle/gradle-wrapper.properties

Définissez distributionUrl pour utiliser Gradle 8.1.1 ou version ultérieure.

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

Mettre à jour launcher/build.gradle

  • Définissez l'attribut namespace en utilisant la valeur de l'attribut package de launcher/AndroidManifest.xml.
  • Définissez sourceCompatibility et targetCompatibility sur 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'

Mettre à jour settings.gradle au niveau du projet

Définissez les sections pluginManagement et 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"
        }
    }
}

Mettre à jour unityLibrary/build.gradle

  • Définissez namespace sur la valeur "com.unity3d.player".
  • Définissez sourceCompatibility et targetCompatibility sur 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' }

Mettre à jour unity/Library/GoogleMobileAdsPlugin.androidlib/build.gradle

Définissez l'attribut namespace sur la valeur "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
    }
}

Exécuter le projet Android

Dans Android Studio, exécutez la synchronisation Gradle, puis exécutez le projet.