Kompilowanie aplikacji na Androida w Unity

Edytor Unity jest zablokowany na określoną wersję Gradle. Starsze wersje edytora Unity korzystają z starszych wersji Gradle, które są niezgodne z najnowszą wersją reklam mobilnych Google.

W tabeli poniżej znajdziesz maksymalną zgodną wersję wtyczki reklam mobilnych Google, której możesz używać w zależności od używanej wersji edytora Unity:

Edytor Unity Wersja wtyczki reklam mobilnych Google dla środowiska Unity
2023.1 lub nowsza Najnowsze
2021.3.41f1 – 2022.3 9.1.0
2021.3.37f1 lub starsza 8.5.3

Możesz ręcznie zaktualizować Gradle, aby używać najnowszej wersji wtyczki reklam mobilnych Google dla środowiska Unity, w tym w starszych edytorach Unity. Aby skompilować aplikację na Androida, wybierz preferowaną wersję edytora Unity:

Wymagania wstępne

Zanim przejdziesz dalej, sprawdź, czy masz:

Włączanie niestandardowych szablonów Gradle

Kliknij Ustawienia projektu > Odtwarzacz > Android > Ustawienia publikacji > Kompilacja i włącz opcje Custom Main Gradle TemplateCustom Gradle Properties Template.

Włączanie niestandardowych szablonów Gradle

Ustaw docelowy poziom interfejsu API 34

W menu głównym kliknij Edytuj > Ustawienia projektu > Odtwarzacz > Android > Inne ustawienia i ustaw Docelowy poziom interfejsu API na poziom interfejsu API 34 lub wyższy.

Ustawianie docelowego poziomu interfejsu API

Uruchamianie projektu na Androida

W Android Studio uruchom polecenie gradle syncuruchom projekt.

Wymagania wstępne

Zanim przejdziesz dalej, sprawdź, czy masz:

Włączanie niestandardowych szablonów Gradle

Kliknij Ustawienia projektu > Odtwarzacz > Android > Ustawienia publikacji > Kompilacja i włącz opcje Custom Main Gradle TemplateCustom Gradle Properties Template.

Włączanie niestandardowych szablonów Gradle

Ustaw docelowy poziom interfejsu API 34

W menu głównym kliknij Edytuj > Ustawienia projektu > Odtwarzacz > Android > Inne ustawienia i ustaw Docelowy poziom interfejsu API na poziom interfejsu API 34 lub wyższy.

Ustawianie docelowego poziomu interfejsu API

Eksportowanie do Android Studio

Zmień ustawienia kompilacji na Androida, klikając Plik (lub Edytor Unity na komputerze Mac) > Ustawienia kompilacji i zaznacz Eksportuj projekt:

Eksportowanie projektu

Otwórz Android Studio

Ta sekcja zawiera instrukcje dotyczące wykonywania czynności w Android Studio.

Aktualizowanie konfiguracji JDK w Gradle

Otwórz ustawienia Gradle w sekcji Plik (lub Android Studio na komputerze Mac) > Ustawienia > Kompilacja > Wykonywanie > Wdrażanie > Narzędzia kompilacji > Gradle. Odszukaj menu Gradle JDK i ustaw Gradle JDK tak, aby używać JDK 17 lub nowszej wersji.

Aktualizowanie konfiguracji JDK w Gradle

Jeśli nie masz zainstalowanej wersji JDK 17, na pasku menu JDK w Gradle wybierz opcję Pobierz JDK i pobierz zgodną wersję. Zalecamy użycie pakietu JetBrains Runtime z obsługą aarch64, który jest zgodny z pakietem rozprowadzanym przez Android Studio.

Zaktualizuj plik build.gradle na poziomie projektu

Ustaw wersję narzędzi Gradle na 8.1.1 lub nowszą.


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
}

Zaktualizuj: /gradle/gradle-wrapper.properties

Ustaw distributionUrl na Gradle 8.1.1 lub nowszą wersję.

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

Uruchamianie projektu na Androida

W Android Studio uruchom polecenie gradle syncuruchom projekt.

Wymagania wstępne

Zanim przejdziesz dalej, sprawdź, czy masz:

Włączanie niestandardowych szablonów Gradle

Kliknij Ustawienia projektu > Odtwarzacz > Android > Ustawienia publikacji > Kompilacja i włącz opcje Custom Main Gradle TemplateCustom Gradle Properties Template.

Włączanie niestandardowych szablonów Gradle

Ustaw docelowy poziom interfejsu API 34

W menu głównym kliknij Edytuj > Ustawienia projektu > Odtwarzacz > Android > Inne ustawienia i ustaw Docelowy poziom interfejsu API na poziom interfejsu API 34 lub wyższy.

Ustawianie docelowego poziomu interfejsu API

Eksportowanie do Android Studio

Zmień ustawienia kompilacji na Androida, klikając Plik (lub Edytor Unity na komputerze Mac) > Ustawienia kompilacji i zaznacz Eksportuj projekt:

Eksportowanie projektu

Jeśli pojawi się ostrzeżenie, że brakuje interfejsu API platformy pakietu Android SDK w poziomie 34, wybierz opcję „Zaktualizuj pakiet Android SDK”.

Otwórz Android Studio

Ta sekcja zawiera instrukcje dotyczące wykonywania czynności w Android Studio.

Aktualizowanie konfiguracji JDK w Gradle

Otwórz ustawienia Gradle w sekcji Plik (lub Android Studio na komputerze Mac) > Ustawienia > Kompilacja > Wykonywanie > Wdrażanie > Narzędzia kompilacji > Gradle. Odszukaj menu Gradle JDK i ustaw Gradle JDK tak, aby używać JDK 17 lub nowszej wersji.

Aktualizowanie konfiguracji JDK w Gradle

Jeśli nie masz zainstalowanej wersji JDK 17, na pasku menu JDK w Gradle wybierz opcję Pobierz JDK i pobierz zgodną wersję. Zalecamy użycie pakietu JetBrains Runtime z obsługą aarch64, który jest zgodny z pakietem rozprowadzanym przez Android Studio.

Zaktualizuj plik build.gradle na poziomie projektu

Ustaw wersję narzędzi Gradle na 8.1.1 lub nowszą.


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
}

Zaktualizuj: /gradle/gradle-wrapper.properties

Ustaw distributionUrl na Gradle 8.1.1 lub nowszą wersję.

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

Zaktualizuj: launcher/build.gradle

  • Ustaw atrybut namespace za pomocą wartości atrybutu package z elementu launcher/AndroidManifest.xml.
  • Ustaw sourceCompatibilitytargetCompatibility na 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'

Zaktualizuj settings.gradle na poziomie projektu

Skonfiguruj sekcje pluginManagement i 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"
        }
    }
}

Zaktualizuj plik unityLibrary/build.gradle

  • Ustaw zmienną namespace na wartość "com.unity3d.player".
  • Ustaw wartości sourceCompatibilitytargetCompatibility na 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' }

Zaktualizuj plik unity/Library/GoogleMobileAdsPlugin.androidlib/build.gradle

Ustaw atrybut namespace na "com.google.unity.ads".


apply plugin: 'android-library'

dependencies {
    implementation fileTree(dir: 'bin', include: ['.jar'])
    implementation fileTree(dir: 'libs', include: ['.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
    }
}

Uruchamianie projektu na Androida

W Android Studio uruchom polecenie gradle syncuruchom projekt.