הגרסה של Unity Editor נעולה לגרסה ספציפית של Gradle. גרסאות קודמות של Unity Editor משתמשות בגרסאות קודמות של Gradle שלא תואמות לגרסה העדכנית של Google Mobile Ads.
כדי לפתח ל-Android, בוחרים את הגרסה המועדפת של Unity Editor:
2023.1 ומעלה
הפעלת מעבד מקדים של גרסת Gradle
מעבד ה-Gradle build מופעל כברירת מחדל ב-Unity Editor בגרסה 2021.3.41f1 ואילך. המעבד מחיל באופן אוטומטי את כל ההגדרות הנדרשות של Gradle ושל הנגן כדי לתמוך בגרסה האחרונה של Google Mobile Ads Unity Plugin בגרסאות קודמות של Unity Editor.
הגדרה ידנית של Android ו-Gradle
הפעלת תבניות Gradle בהתאמה אישית
עוברים אל Project Settings > Player > Android > Publishing Settings > Build (הגדרות הפרויקט > נגן > Android > הגדרות פרסום > גרסה) ומפעילים את Custom Main Gradle Template ו-Custom Gradle Properties Template.
הגדרת רמת ה-API המיועדת
בתפריט הראשי, פותחים את Edit > Project Settings > Player > Android > Other Settings ומגדירים את Target API Level ל-API Level 24 או לרמה גבוהה יותר.
2021.3.41f1 עד 2022.3
הפעלת מעבד מקדים של גרסת Gradle
מעבד ה-Gradle build מופעל כברירת מחדל ב-Unity Editor בגרסה 2021.3.41f1 ואילך. המעבד מחיל באופן אוטומטי את כל ההגדרות הנדרשות של Gradle ושל הנגן כדי לתמוך בגרסה האחרונה של Google Mobile Ads Unity Plugin בגרסאות קודמות של Unity Editor.
הגדרה ידנית של Android ו-Gradle
הפעלת תבניות Gradle בהתאמה אישית
עוברים אל Project Settings > Player > Android > Publishing Settings > Build (הגדרות הפרויקט > נגן > Android > הגדרות פרסום > גרסה) ומפעילים את Custom Main Gradle Template ו-Custom Gradle Properties Template.
הגדרת רמת ה-API המיועדת
בתפריט הראשי, פותחים את Edit > Project Settings > Player > Android > Other Settings ומגדירים את Target API Level ל-API Level 24 או לרמה גבוהה יותר.
הוספת רשימת קטעי הקוד להתעלמות של Jetifier לקובץ `gradleTemplate.properties`
עורכים את Assets/Plugins/Android/gradleTemplate.properties ומוסיפים את השורה הבאה:
android.jetifier.ignorelist=annotation-experimental-1.4.0.aar
מסירים את `minSDKVersion` מהקובץ `AndroidManifest.xml`
צריך לערוך את Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml ולהסיר את android:minSdkVersion="21" מהצומת uses-sdk .
הקובץ AndroidManifest.xml אמור להיראות כך:
<?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
דרישות מוקדמות
לפני שממשיכים, חשוב לוודא שיש לכם:
- מורידים ומתקינים את הגרסה היציבה האחרונה של Android Studio.
- אופציונלי: לפרטים על פיתוח ל-Android, ראו גרסאות Java ב-builds של Android.
הפעלת תבניות Gradle בהתאמה אישית
עוברים אל Project Settings > Player > Android > Publishing Settings > Build (הגדרות הפרויקט > נגן > Android > הגדרות פרסום > גרסה) ומפעילים את Custom Main Gradle Template ו-Custom Gradle Properties Template.
הגדרת רמת ה-API המיועדת
בתפריט הראשי, פותחים את Edit > Project Settings > Player > Android > Other Settings ומגדירים את Target API Level ל-API Level 35 ומעלה.
ייצוא אל Android Studio
כדי לשנות את הגדרות ה-build של Android, בוחרים באפשרות File (או Unity Editor ב-MacOS) > Build Settings ומסמנים את האפשרות Export Project:
אם מופיעה אזהרה שחסרה רמת API 35 של פלטפורמת Android SDK, בוחרים באפשרות Update Android SDK.
פותחים את Android Studio.
הקטע הזה מכיל שלבים שמבצעים ב-Android Studio.
עדכון ההגדרה של Gradle JDK
פותחים את הגדרות Gradle דרך File (או Android Studio ב-MacOS) > Settings > Build > Execution > Deployment > Build Tools > Gradle. מאתרים את התפריט הנפתח Gradle JDK ומגדירים את Gradle JDK כך שישתמש ב-JDK 17 ואילך.
אם לא התקנתם את JDK 17, בחרו באפשרות Download JDK בסרגל התפריטים של Gradle JDK והורידו גרסה תואמת. אנחנו ממליצים על הספק JetBrains runtime עם תמיכה ב-aarch64, כדי להתאים למה שמופץ ב-Android Studio.
עדכון של build.gradle ברמת הפרויקט
מגדירים את גרסת הכלים של Gradle ל-8.1.1 או לגרסה חדשה יותר.
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
מגדירים את distributionUrl כך שישתמש ב-Gradle 8.1.1 ואילך.
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
עדכון של launcher/build.gradle
- הגדרת המאפיין
namespaceבאמצעות הערך של המאפייןpackageמ-launcher/AndroidManifest.xml - מגדירים את
sourceCompatibilityואתtargetCompatibilityל-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 ברמת הפרויקט
מגדירים את הקטעים pluginManagement ו-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" } } }
עדכון unityLibrary/build.gradle
- הגדרת
namespaceעם הערך"com.unity3d.player" - מגדירים את
sourceCompatibilityואתtargetCompatibilityלערך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
מגדירים את המאפיין namespace עם הערך "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 } }
הפעלת פרויקט Android
ב-Android Studio, מריצים סנכרון של Gradle ומריצים את הפרויקט.