Unity für Android erstellen

Der Unity-Editor ist an eine bestimmte Version von Gradle gebunden. Frühere Versionen des Unity-Editors verwenden frühere Versionen von Gradle, die mit der aktuellen Version von Google Mobile Ads nicht kompatibel sind.

Wählen Sie zum Erstellen von Android-Apps Ihre bevorzugte Unity-Editor-Version aus:

2023.1 oder höher

Gradle-Build-Präprozessor aktivieren

Der Gradle-Build-Präprozessor ist im Unity-Editor 2021.3.41f1 und höher standardmäßig aktiviert. Der Prozessor wendet automatisch alle erforderlichen Gradle- und Player-Einstellungen an, um die neueste Google Mobile Ads Unity Plugin-Version in früheren Versionen des Unity-Editors zu unterstützen.

Gradle-Build-Präprozessor aktivieren

Android- und Gradle-Einstellungen manuell konfigurieren

Benutzerdefinierte Gradle-Vorlagen aktivieren

Gehen Sie zu Projekteinstellungen > Player > Android > Veröffentlichungseinstellungen > Build und aktivieren Sie Custom Main Gradle Template und Custom Gradle Properties Template.

Benutzerdefinierte Gradle-Vorlagen aktivieren

Ziel-API-Level festlegen

Öffnen Sie im Hauptmenü Edit > Projekteinstellungen > Player > Android > Other Settings und legen Sie für Ziel-API-Level die Option API-Level 24 oder höher fest.

2021.3.41f1–2022.3

Gradle-Build-Präprozessor aktivieren

Der Gradle-Build-Präprozessor ist im Unity-Editor 2021.3.41f1 und höher standardmäßig aktiviert. Der Prozessor wendet automatisch alle erforderlichen Gradle- und Player-Einstellungen an, um die neueste Google Mobile Ads Unity Plugin-Version in früheren Versionen des Unity-Editors zu unterstützen.

Gradle-Build-Präprozessor aktivieren

Android- und Gradle-Einstellungen manuell konfigurieren

Benutzerdefinierte Gradle-Vorlagen aktivieren

Gehen Sie zu Projekteinstellungen > Player > Android > Veröffentlichungseinstellungen > Build und aktivieren Sie Custom Main Gradle Template und Custom Gradle Properties Template.

Benutzerdefinierte Gradle-Vorlagen aktivieren

Ziel-API-Level festlegen

Öffnen Sie im Hauptmenü Edit > Projekteinstellungen > Player > Android > Other Settings und legen Sie für Ziel-API-Level die Option API-Level 24 oder höher fest.

Ignorierliste für Jetifier zu „gradleTemplate.properties“ hinzufügen

Bearbeiten Sie Assets/Plugins/Android/gradleTemplate.properties und fügen Sie die folgende Zeile hinzu:

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

Entfernen Sie „minSDKVersion“ aus „AndroidManifest.xml“.

Bearbeiten Sie Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml und entfernen Sie android:minSdkVersion="21" aus dem Knoten uses-sdk . Ihre AndroidManifest.xml sollte in etwa so aussehen:

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

Vorbereitung

Bevor Sie fortfahren, benötigen Sie Folgendes:

  • Laden Sie die aktuelle stabile Version von Android Studio herunter und installieren Sie sie.

Benutzerdefinierte Gradle-Vorlagen aktivieren

Gehen Sie zu Projekteinstellungen > Player > Android > Veröffentlichungseinstellungen > Build und aktivieren Sie Custom Main Gradle Template und Custom Gradle Properties Template.

Benutzerdefinierte Gradle-Vorlagen aktivieren

Ziel-API-Level festlegen

Öffnen Sie im Hauptmenü Edit > Projekteinstellungen > Player > Android > Other Settings und legen Sie für Ziel-API-Level die Option API Level 35 oder höher fest.

In Android Studio exportieren

Ändern Sie die Android-Build-Einstellungen, indem Sie Datei (oder Unity Editor unter macOS) > Build-Einstellungen auswählen und „Projekt exportieren“ aktivieren:

Projekt exportieren

Wenn Sie eine Warnung erhalten, dass die Android SDK-Plattform-API-Ebene 35 fehlt, wählen Sie die Option Android SDK aktualisieren aus.

Öffnen Sie Android Studio.

In diesem Abschnitt werden die Schritte beschrieben, die in Android Studio ausgeführt werden.

Gradle-JDK-Konfiguration aktualisieren

Öffnen Sie die Gradle-Einstellungen über Datei (oder Android Studio unter macOS) > Einstellungen > Build > Ausführung > Bereitstellung > Build-Tools > Gradle. Suchen Sie das Drop-down-Menü Gradle JDK und legen Sie JDK 17 oder höher als Gradle JDK fest.

Gradle-JDK-Konfiguration aktualisieren

Wenn Sie JDK 17 nicht installiert haben, wählen Sie in der Gradle-JDK-Menüleiste die Option Download JDK aus und laden Sie eine kompatible Version herunter. Wir empfehlen den Anbieter JetBrains Runtime mit aarch64-Unterstützung, um die von Android Studio bereitgestellte Version zu verwenden.

build.gradle-Datei auf Projektebene aktualisieren

Legen Sie die Gradle-Tools-Version auf 8.1.1 oder höher fest.

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
}

/gradle/gradle-wrapper.properties aktualisieren

Legen Sie distributionUrl fest, um Gradle 8.1.1 oder höher zu verwenden.

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

launcher/build.gradle aktualisieren

  • Legen Sie das Attribut namespace mit dem Wert des Attributs package aus launcher/AndroidManifest.xml fest.
  • Setzen Sie sourceCompatibility und targetCompatibility auf 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'

settings.gradle auf Projektebene aktualisieren

Legen Sie die Abschnitte pluginManagement und dependencyResolutionManagement fest.

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"
        }
    }
}

unityLibrary/build.gradle aktualisieren

  • Legen Sie für namespace den Wert "com.unity3d.player" fest.
  • Setzen Sie sourceCompatibility und targetCompatibility auf 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' }

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

Legen Sie für das Attribut namespace den Wert "com.google.unity.ads" fest.

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

Android-Projekt ausführen

Führen Sie in Android Studio die Gradle-Synchronisierung aus und starten Sie das Projekt.