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 ne sont pas compatibles 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 préprocesseur de build Gradle

Le préprocesseur de build 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 Google Mobile Ads Unity Plugin sur les versions antérieures de l'éditeur Unity.

Activer le pré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 > Build), puis activez Custom Main Gradle Template et Custom Gradle Properties Template.

Activer les modèles Gradle personnalisés

Définir le niveau d'API cible

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 23 ou version ultérieure.

2021.3.41f1 - 2022.3

Activer le préprocesseur de build Gradle

Le préprocesseur de build 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 Google Mobile Ads Unity Plugin sur les versions antérieures de l'éditeur Unity.

Activer le pré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 > Build), puis activez Custom Main Gradle Template et Custom Gradle Properties Template.

Activer les modèles Gradle personnalisés

Définir le niveau d'API cible

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 23 ou version ultérieure.

Ajouter une liste d'exclusion 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 fichier AndroidManifest.xml doit 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 de 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 > Build), puis activez Custom Main Gradle Template et Custom Gradle Properties Template.

Activer les modèles Gradle personnalisés

Définir le niveau d'API cible

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 35 ou version ultérieure.

Exporter vers Android Studio

Modifiez les paramètres de build Android en sélectionnant File (ou Unity Editor sous MacOS) > Build Settings (Fichier [ou Éditeur Unity sous MacOS] > Paramètres de build), puis cochez "Export Project" (Exporter le projet) :

Exporter un projet

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

Ouvrir Android Studio

Cette section décrit les étapes à suivre dans Android Studio.

Mettre à jour la configuration du JDK Gradle

Ouvrez les paramètres Gradle à partir de File (ou Android Studio sous MacOS) > Settings > Build > Execution > Deployment > Build Tools > Gradle (Fichier [ou Android Studio sous MacOS] > Paramètres > Build > Exécution > Déploiement > Outils de build > Gradle). Recherchez le menu déroulant Gradle JDK et définissez le JDK Gradle sur JDK 17 ou version ultérieure.

Mettre à jour la configuration JDK de Gradle

Si JDK 17 n'est pas installé, sélectionnez les options Download JDK (Télécharger JDK) dans la barre de menu JDK Gradle, puis téléchargez une version compatible. Nous vous recommandons le fournisseur d'exécution JetBrains avec la prise en charge 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 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 à l'aide de 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 avec 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 35
        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 avec 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.