תאימות ל-Android ב-Unity Editor

גרסת Unity Editor נעולה לגרסה ספציפית של Gradle, שעשויה להתנגש עם יחסי התלות הנדרשים לחבילות Android חדשות יותר, כמו Google Mobile Ads. במדריך הבא מוסבר איך ליצור גרסה מבוססת-build ל-Android בגרסאות קודמות של Unity Editor.

בטבלה הבאה מפורטת הגרסה המומלצת של הפלאגין של Google Mobile Ads, בהתאם לגרסה של Unity Editor.

Unity Editor גרסת הפלאגין המומלצת של Google Mobile Ads ל-Unity
2023.1 ואילך החדש ביותר
2021.3.41f1 – 2022.3 9.1.0
2021.3.37f1 או גרסה ישנה יותר 8.5.3

דרישות מוקדמות

עדכון הגדרות ה-build בגרסה 2022.3 ובגרסאות קודמות

ב-Unity 2022.3 וגרסאות קודמות, צריך לשנות את הגדרות ה-build לפני הייצוא ל-Android Studio.

יצירת הקובץ baseProjectTemplate.gradle

  1. הפעלת תבניות Gradle בהתאמה אישית. עוברים אל Project Settings (הגדרות הפרויקט) > Player (נגן) > Android (Android) > Publishing Settings (הגדרות פרסום) > Build ובוחרים באפשרות Custom Base Gradle Template. הפעולה הזו יוצרת את הקובץ Plugins/Android/baseProjectTemplate.gradle.

  2. משנים את הקובץ Plugins/Android/baseProjectTemplate.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
    }
    

שינויים נוספים בגרסה Unity 2021.3.37f1 וגרסאות קודמות

ב-Unity בגרסה 2021.3.37f1 וגרסאות קודמות, נדרשים שינויים נוספים כדי לשדרג את התאימות ל-Gradle 8.1.1. מבצעים את השלבים הבאים:

יצירת launcherTemplate.gradle

  1. עוברים אל Project Settings (הגדרות הפרויקט)‏ > Player (נגן)‏ > Android (Android)‏ > Publishing Settings (הגדרות פרסום) > Build, ובוחרים באפשרות Launcher Gradle Template. הפקודה הזו יוצרת את הקובץ Plugins/Android/launcherTemplate.gradle.

  2. משנים את Plugins/Android/launcherTemplate.gradle כך שיכלול את מאפיין מרחב השמות. ערך המאפיין של מרחב השמות צריך להיות זהה לערך של מאפיין החבילה שנמצא בקובץ AndroidManifest.xml של מודול מרכז האפליקציות.

    android {
        // TODO: Replace with your app's package name.
        namespace 'com.google.android.gms.example'
    }
    

יצירת mainTemplate.gradle

  1. עוברים אל Project Settings (הגדרות הפרויקט)‏ > Player (נגן)‏ > Android (Android)‏ > Publishing Settings (הגדרות פרסום)‏ > Build ובוחרים באפשרות Main Gradle Template. הפעולה הזו יוצרת את הקובץ Plugins/Android/mainTemplate.gradle.

.

  1. משנים את Plugins/Android/mainTemplate.gradle כך שיכלול את מאפיין מרחב השמות עם הערך com.unity3d.player.

    android {
        namespace 'com.unity3d.player'
    }
    

ייצוא ל-Android Studio

  1. משנים את הגדרות ה-build של Android כדי לייצא את פרויקט Unity.

  2. כדי לייצא ל-Android Studio, משנים את הגדרות ה-build של Android. בוחרים באפשרות File (או Unity Editor ב-macOS) > Build Settings ומסמנים את האפשרות Export Project:

  3. לוחצים על הלחצן ייצוא בתחתית תיבת הדו-שיח Build Settings (הגדרות build). מערכת Unity יוצרת פרויקט Android במיקום שנבחר.

  4. פותחים את הפרויקט שיוצאו ב-Android Studio.

עדכון ההגדרה של Gradle JDK לשימוש ב-JDK 17

  1. פותחים את הגדרות Gradle ב-Android Studio בקטע File (או Android Studio ב-macOS) > Settings > Build, Execution, Deployment > Build Tools > Gradle.
  2. מחפשים את התפריט הנפתח Gradle JDK. משנים את Gradle JDK כך שישתמש ב-JDK 17.

    אם JDK 17 לא מותקן, בוחרים באפשרות Download JDK בתפריט הנפתח של Gradle JDK ומורידים גרסה תואמת. מומלץ להשתמש בספק של זמן הריצה של JetBrains עם תמיכה ב-arch64, כדי להתאים למה ש-Android Studio מפיץ.

עדכון קובצי ה-wrapper של Gradle

משנים את הפרמטר distributionUrl ב-gradle/wrapper/gradle-wrapper.properties כדי להשתמש ב-Gradle מגרסה 8.0.1 ואילך.

   distributionBase=GRADLE_USER_HOME
   distributionPath=wrapper/dists
   zipStoreBase=GRADLE_USER_HOME
   zipStorePath=wrapper/dists
   distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-bin.zip

שינויים נוספים ב-Android Studio לגרסה 2021.3.37f1 וגרסאות קודמות של Unity

ב-Unity 2021.3.37f1 וגרסאות קודמות, נדרשים שינויים נוספים כדי לשדרג את התאימות ל-Gradle 8.1.1. מבצעים את השלבים הבאים:

  1. משנים את המאפיין gradle.properties ומסירים את המאפיין android.enableR8=false.

  2. משנים את unityLibrary/GoogleMobileAdsPlugin.androidlib/build.gradle ומוסיפים מאפיין מרחב שמות עם הערך "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 35
        buildToolsVersion '30.0.3'
        defaultConfig {
            targetSdkVersion 31
        }
    
        lintOptions {
            abortOnError false
        }
    }
    

הפעלת הפרויקט ל-Android

אחרי השלמת השלבים האלה, אפליקציית Unity מוכנה. ב-Android Studio, מריצים את gradle sync ומריצים את הפרויקט.