Edytor Unity jest powiązany z określoną wersją Gradle. Starsze wersje edytora Unity używają starszych wersji Gradle, które są niezgodne z najnowszą wersją reklam mobilnych Google.
Aby skompilować projekt na Androida, wybierz preferowaną wersję edytora Unity:
2023.1 lub nowsza
Włączanie preprocesora kompilacji Gradle
Preprocesor kompilacji Gradle jest domyślnie włączony w edytorze Unity w wersji 2021.3.41f1 i nowszych. Procesor automatycznie stosuje wszystkie niezbędne ustawienia Gradle i odtwarzacza, aby obsługiwać najnowsze Google Mobile Ads Unity Plugin w starszych wersjach edytora Unity.
Ręczne konfigurowanie ustawień Androida i Gradle
Włączanie niestandardowych szablonów Gradle
Kliknij Ustawienia projektu > Odtwarzacz > Android > Ustawienia publikowania > Kompilacja i włącz Custom Main Gradle Template oraz Custom Gradle Properties Template.
Ustawianie docelowego poziomu API
W menu głównym otwórz Edit > Project Settings > Player > Android > Other Settings (Edytuj > Ustawienia projektu > Odtwarzacz > Android > Inne ustawienia) i ustaw Target API Level (Docelowy poziom interfejsu API) na API Level 23 (Poziom interfejsu API 23) lub wyższy.
2021.3.41f1–2022.3
Włączanie preprocesora kompilacji Gradle
Preprocesor kompilacji Gradle jest domyślnie włączony w edytorze Unity w wersji 2021.3.41f1 i nowszych. Procesor automatycznie stosuje wszystkie niezbędne ustawienia Gradle i odtwarzacza, aby obsługiwać najnowsze Google Mobile Ads Unity Plugin w starszych wersjach edytora Unity.
Ręczne konfigurowanie ustawień Androida i Gradle
Włączanie niestandardowych szablonów Gradle
Kliknij Ustawienia projektu > Odtwarzacz > Android > Ustawienia publikowania > Kompilacja i włącz Custom Main Gradle Template oraz Custom Gradle Properties Template.
Ustawianie docelowego poziomu API
W menu głównym otwórz Edit > Project Settings > Player > Android > Other Settings (Edytuj > Ustawienia projektu > Odtwarzacz > Android > Inne ustawienia) i ustaw Target API Level (Docelowy poziom interfejsu API) na API Level 23 (Poziom interfejsu API 23) lub wyższy.
Dodawanie listy ignorowanych przez Jetifier do pliku `gradleTemplate.properties`
Edytuj plik Assets/Plugins/Android/gradleTemplate.properties
i dodaj ten wiersz:
android.jetifier.ignorelist=annotation-experimental-1.4.0.aar
Usuń `minSDKVersion` z pliku `AndroidManifest.xml`
Edytuj Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml
i usuń android:minSdkVersion="21" z węzła uses-sdk .
AndroidManifest.xml powinno wyglądać tak:
<?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
Wymagania wstępne
Zanim przejdziesz dalej, upewnij się, że masz:
- Pobierz i zainstaluj najnowszą stabilną wersję Android Studio.
- Opcjonalnie: szczegółowe informacje o tworzeniu aplikacji na Androida znajdziesz w artykule Wersje Javy w kompilacjach Androida.
Włączanie niestandardowych szablonów Gradle
Kliknij Ustawienia projektu > Odtwarzacz > Android > Ustawienia publikowania > Kompilacja i włącz Custom Main Gradle Template oraz Custom Gradle Properties Template.
Ustawianie docelowego poziomu API
W menu głównym otwórz Edit > Project Settings > Player > Android > Other Settings (Edytuj > Ustawienia projektu > Odtwarzacz > Android > Inne ustawienia) i ustaw Target API Level (Docelowy poziom interfejsu API) na API Level 35 (Poziom interfejsu API 35) lub wyższy.
Eksportowanie do Androida Studio
Zmodyfikuj ustawienia kompilacji Androida, wybierając Plik (lub Edytor Unity na MacOS) > Ustawienia kompilacji i zaznaczając Eksportuj projekt:
Jeśli pojawi się ostrzeżenie o braku interfejsu API platformy Android SDK na poziomie 35, wybierz opcję „Zaktualizuj Android SDK”.
Otwórz Android Studio
Ta sekcja zawiera czynności wykonywane w Android Studio.
Aktualizowanie konfiguracji Gradle JDK
Otwórz ustawienia Gradle, wybierając Plik (lub Android Studio na macOS) > Ustawienia > Kompilacja > Wykonanie > Wdrożenie > Narzędzia do kompilacji > Gradle. Znajdź menu Gradle JDK i ustaw w nim pakiet JDK 17 lub nowszy.
Jeśli nie masz zainstalowanego pakietu JDK 17, na pasku menu Gradle JDK wybierz opcję Download JDK (Pobierz JDK) i pobierz zgodną wersję. Zalecamy używanie dostawcy JetBrains runtime z obsługą architektury aarch64, aby dopasować go do tego, co jest rozpowszechniane w Android Studio.
Aktualizowanie pliku 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, aby używać Gradle 8.1.1 lub nowszego.
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
Zaktualizuj: launcher/build.gradle
- Ustaw atrybut
namespace, używając wartości atrybutupackagezlauncher/AndroidManifest.xml - Ustaw
sourceCompatibilityitargetCompatibilityna 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'
Aktualizowanie settings.gradle na poziomie projektu
Ustaw 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" } } }
Aktualizacja pliku unityLibrary/build.gradle
- Ustaw
namespacena wartość"com.unity3d.player" - Ustaw wartości
sourceCompatibilityitargetCompatibilitynaJavaVersion.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' }
Zaktualizuj plik unity/Library/GoogleMobileAdsPlugin.androidlib/build.gradle
Ustaw atrybut namespace z wartością "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 } }
Uruchamianie projektu na Androida
W Android Studio uruchom synchronizację Gradle i uruchom projekt.