הגרסה של Unity Editor נעולה לגרסה ספציפית של Gradle. בגרסאות קודמות של Unity Editor נעשה שימוש בגרסאות קודמות של Gradle שלא תואמות לגרסה העדכנית של Google Mobile Ads.
כדי ליצור את Android, בוחרים את הגרסה המועדפת של Unity Editor:
גרסה 2023.1 ומעלה
הפעלת מעבד מקדים של Gradle build
מעבד מקדים של 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 (גרסת Build)
ומפעילים את Custom Main Gradle Template ואת Custom Gradle Properties Template.
הגדרת רמת ה-API המיועדת
בתפריט הראשי, פותחים את Edit > Project Settings > Player > Android > Other Settings (עריכה > הגדרות הפרויקט > נגן > Android > הגדרות אחרות) ומגדירים את Target API Level (רמת ה-API המיועדת) ל-API Level 24 (רמת API 24) או לרמה גבוהה יותר.
2021.3.41f1 עד 2022.3
הפעלת מעבד מקדים של Gradle build
מעבד מקדים של 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 (גרסת Build)
ומפעילים את Custom Main Gradle Template ואת Custom Gradle Properties Template.
הגדרת רמת ה-API המיועדת
בתפריט הראשי, פותחים את Edit > Project Settings > Player > Android > Other Settings (עריכה > הגדרות הפרויקט > נגן > Android > הגדרות אחרות) ומגדירים את Target API Level (רמת ה-API המיועדת) ל-API Level 24 (רמת API 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 בבנייה ל-Android
הפעלת תבניות Gradle בהתאמה אישית
עוברים אל Project Settings (הגדרות הפרויקט) > Player (הפעלה) > Android > Publishing Settings (הגדרות פרסום) > Build (גרסת Build)
ומפעילים את Custom Main Gradle Template ואת Custom Gradle Properties Template.
הגדרת רמת ה-API המיועדת
בתפריט הראשי, פותחים את Edit > Project Settings > Player > Android > Other Settings (עריכה > הגדרות הפרויקט > Player > Android > הגדרות אחרות) ומגדירים את Target API Level (רמת ה-API המיועדת) ל-API Level 35 (רמת API 35) או לרמה גבוהה יותר.
ייצוא אל Android Studio
משנים את הגדרות ה-build של Android על ידי בחירה באפשרות File (קובץ) (או Unity Editor ב-MacOS) > Build Settings (הגדרות ה-build) וסימון האפשרות Export Project (ייצוא הפרויקט):
אם מוצגת אזהרה על כך שחסר Android SDK platform API ברמה 35, בוחרים באפשרות 'עדכון 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 ומריצים את הפרויקט.