Compilare Unity per Android

L'Editor di Unity è bloccato a una versione specifica di Gradle. Le versioni precedenti dell'Editor di Unity utilizzano versioni precedenti di Gradle, che non sono compatibili con l'ultima versione di Google Mobile Ads.

Per creare Android, seleziona la versione dell'Editor di Unity che preferisci:

2023.1 o versioni successive

Abilita il pre-processore di build Gradle

Il pre-processore di build Gradle è abilitato per impostazione predefinita nell'Editor di Unity 2021.3.41f1 e versioni successive. Il processore applica automaticamente tutte le impostazioni di Gradle e del player necessarie per supportare l'ultimo Google Mobile Ads Unity Plugin nelle versioni precedenti dell'Editor di Unity.

Abilita il preprocessor di build Gradle

Configura manualmente le impostazioni di Android e Gradle

Abilita i modelli Gradle personalizzati

Vai a Project Settings > Player > Android > Publishing Settings > Build e abilita Custom Main Gradle Template e Custom Gradle Properties Template.

Attivare i modelli Gradle personalizzati

Imposta il livello API target

Dal menu principale, apri Edit > Project Settings > Player > Android > Other Settings e imposta il livello API target su Livello API 23 o versioni successive.

2021.3.41f1 - 2022.3

Abilita il pre-processore di build Gradle

Il pre-processore di build Gradle è abilitato per impostazione predefinita nell'Editor di Unity 2021.3.41f1 e versioni successive. Il processore applica automaticamente tutte le impostazioni di Gradle e del player necessarie per supportare l'ultimo Google Mobile Ads Unity Plugin nelle versioni precedenti dell'Editor di Unity.

Abilita il preprocessor di build Gradle

Configura manualmente le impostazioni di Android e Gradle

Abilita i modelli Gradle personalizzati

Vai a Project Settings > Player > Android > Publishing Settings > Build e abilita Custom Main Gradle Template e Custom Gradle Properties Template.

Attivare i modelli Gradle personalizzati

Imposta il livello API target

Dal menu principale, apri Edit > Project Settings > Player > Android > Other Settings e imposta il livello API target su Livello API 23 o versioni successive.

Aggiungi l'elenco degli elementi da ignorare di Jetifier a `gradleTemplate.properties`

Modifica Assets/Plugins/Android/gradleTemplate.properties e aggiungi la seguente riga:

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

Rimuovi `minSDKVersion` da `AndroidManifest.xml`

Modifica Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml e rimuovi android:minSdkVersion="21" dal nodo uses-sdk . Il file AndroidManifest.xml dovrebbe avere il seguente aspetto:

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

Prerequisiti

Prima di continuare, assicurati di avere:

Abilita i modelli Gradle personalizzati

Vai a Project Settings > Player > Android > Publishing Settings > Build e abilita Custom Main Gradle Template e Custom Gradle Properties Template.

Attivare i modelli Gradle personalizzati

Imposta il livello API target

Dal menu principale, apri Edit > Project Settings > Player > Android > Other Settings e imposta il livello API target su Livello API 35 o versioni successive.

Esporta in Android Studio

Modifica le impostazioni di build Android selezionando File (o Editor di Unity su macOS) > Build Settings e seleziona Esporta progetto:

Esporta progetto

Se ricevi un avviso che indica che manca il livello API 35 della piattaforma SDK Android, seleziona l'opzione "Aggiorna SDK Android".

Apri Android Studio

Questa sezione contiene i passaggi eseguiti in Android Studio.

Aggiorna la configurazione JDK di Gradle

Apri le impostazioni di Gradle da File (o Android Studio su macOS) > Impostazioni > Build > Esecuzione > Deployment > Strumenti di build > Gradle. Individua il menu a discesa Gradle JDK e imposta Gradle JDK in modo che utilizzi JDK 17 o versioni successive.

Aggiorna la configurazione JDK di Gradle

Se non hai installato JDK 17, seleziona le opzioni Scarica JDK dalla barra dei menu di Gradle JDK e scarica una versione compatibile. Ti consigliamo il fornitore di runtime JetBrains con supporto aarch64, in modo che corrisponda a quello distribuito da Android Studio.

Aggiorna il file build.gradle a livello di progetto

Imposta la versione degli strumenti Gradle su 8.1.1 o versioni successive.

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
}

Aggiorna /gradle/gradle-wrapper.properties

Imposta distributionUrl in modo che utilizzi Gradle 8.1.1 o versioni successive.

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

Aggiorna launcher/build.gradle

  • Imposta l'attributo namespace utilizzando il valore dell'attributo package di launcher/AndroidManifest.xml
  • Imposta sourceCompatibility e targetCompatibility su 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'

Aggiorna settings.gradle a livello di progetto

Imposta le sezioni pluginManagement e 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"
        }
    }
}

Aggiorna unityLibrary/build.gradle

  • Imposta namespace con il valore "com.unity3d.player"
  • Imposta sourceCompatibility e targetCompatibility su 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' }

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

Imposta l'attributo namespace con il valore "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
    }
}

Esegui il progetto Android

Da Android Studio, esegui la sincronizzazione di Gradle, e esegui il progetto.