Unity für Android erstellen

Der Unity Editor ist auf eine bestimmte Version von Gradle festgelegt. Ältere Versionen des Unity Editors verwenden ältere Versionen von Gradle, die mit der neuesten Version von Google Mobile Ads inkompatibel sind.

Wählen Sie zum Erstellen von Android die gewünschte Unity Editor-Version aus:

2023.1 oder höher

Gradle-Build-Vorprozessor aktivieren

Der Gradle-Build-Vorprozessor ist in Unity Editor 2021.3.41f1 und höher standardmäßig aktiviert. Der Prozessor wendet automatisch alle erforderlichen Gradle- und Player-Einstellungen an, um das neueste Google Mobile Ads Unity Plugin in älteren 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ü Bearbeiten > Projekteinstellungen > Player > Android > Sonstige Einstellungen und legen Sie das Ziel-API-Level auf API-Level 23 oder höher fest.

2021.3.41f1 – 2022.3

Gradle-Build-Vorprozessor aktivieren

Der Gradle-Build-Vorprozessor ist in Unity Editor 2021.3.41f1 und höher standardmäßig aktiviert. Der Prozessor wendet automatisch alle erforderlichen Gradle- und Player-Einstellungen an, um das neueste Google Mobile Ads Unity Plugin in älteren 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ü Bearbeiten > Projekteinstellungen > Player > Android > Sonstige Einstellungen und legen Sie das Ziel-API-Level auf API-Level 23 oder höher fest.

Jetifier-Ignorierliste 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

`minSDKVersion` aus `AndroidManifest.xml` entfernen

Bearbeiten Sie Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml und entfernen Sie android:minSdkVersion="21" aus dem Knoten uses-sdk . AndroidManifest.xml sollte 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, müssen Sie Folgendes tun:

  • Laden Sie die neueste 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ü Bearbeiten > Projekteinstellungen > Player > Android > Sonstige Einstellungen und legen Sie das Ziel-API-Level auf 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 das Kästchen „Projekt exportieren“ anklicken:

Projekt exportieren

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

Android Studio öffnen

Dieser Abschnitt enthält Schritte, die in Android Studio ausgeführt werden.

Gradle-JDK-Konfiguration aktualisieren

Öffnen Sie die Gradle-Einstellungen unter 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 das Gradle JDK so fest, dass JDK 17 oder höher verwendet wird.

Gradle-JDK-Konfiguration aktualisieren

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

build.gradle 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 so fest, dass Gradle 8.1.1 oder höher verwendet wird.

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.
  • Legen Sie sourceCompatibility und targetCompatibility auf Java 17 fest.
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 namespace mit dem Wert "com.unity3d.player" fest.
  • Legen Sie sourceCompatibility und targetCompatibility auf JavaVersion.VERSION_17 fest.
    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 das Attribut namespace mit dem 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 führen Sie das Projekt aus.