Unity für Android erstellen

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

So erstellen Sie Android-Apps:

2023.1 oder höher

Gradle-Build-Postprozessor aktivieren

Der Gradle-Build-Postprozessor ist im Unity-Editor 2021.3.41f1 und höher standardmäßig aktiviert. Der Prozessor wendet automatisch alle erforderlichen Gradle- und Playereinstellungen an, um das aktuelle Google Mobile Ads SDK in früheren Versionen des Unity-Editors zu unterstützen.

Gradle-Build-Postprozessor 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 34 festlegen

Öffnen Sie im Hauptmenü Bearbeiten > Projekteinstellungen > Player > Android > Sonstige Einstellungen und legen Sie die Ziel-API-Ebene auf API-Ebene 34 oder höher fest.

Ziel-API-Level festlegen

2021.3.41f1 – 2022.3

Gradle-Build-Postprozessor aktivieren

Der Gradle-Build-Postprozessor ist im Unity-Editor 2021.3.41f1 und höher standardmäßig aktiviert. Der Prozessor wendet automatisch alle erforderlichen Gradle- und Playereinstellungen an, um das aktuelle Google Mobile Ads SDK in früheren Versionen des Unity-Editors zu unterstützen.

Gradle-Build-Postprozessor 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 34 festlegen

Öffnen Sie im Hauptmenü Bearbeiten > Projekteinstellungen > Player > Android > Sonstige Einstellungen und legen Sie die Ziel-API-Ebene auf API-Ebene 34 oder höher fest.

Ziel-API-Level festlegen

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

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 . Ihr 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, 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 34 festlegen

Öffnen Sie im Hauptmenü Bearbeiten > Projekteinstellungen > Player > Android > Sonstige Einstellungen und legen Sie die Ziel-API-Ebene auf API-Ebene 34 oder höher fest.

Ziel-API-Level festlegen

In Android Studio exportieren

Ändern Sie die Android-Build-Einstellungen, indem Sie File (oder Unity Editor unter MacOS) > Build Settings auswählen und „Export Project“ (Projekt exportieren) aktivieren:

Projekt exportieren

Wenn Sie eine Warnung erhalten, dass das Android SDK-Plattform-API-Level 34 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 ü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 das Gradle JDK auf JDK 17 oder höher fest.

Gradle-JDK-Konfiguration aktualisieren

Wenn Sie JDK 17 nicht installiert haben, wählen Sie in der Menüleiste „Gradle JDK“ die Option Download JDK aus und laden Sie eine kompatible Version herunter. Wir empfehlen den Anbieter JetBrains Runtime mit Unterstützung für aarch64, da dies der Anbieter ist, der auch von Android Studio verwendet wird.

build.gradle auf Projektebene aktualisieren

Legen Sie die Version der Gradle-Tools 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"
        }
    }
}

Datei unityLibrary/build.gradle aktualisieren

  • Legen Sie namespace auf 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 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' }

Datei „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 eine Gradle-Synchronisierung aus und führen Sie das Projekt aus.