ساختن Unity برای Android

Unity Editor به نسخه خاصی از Gradle قفل شده است. نسخه‌های قبلی Unity Editor از نسخه‌های قبلی Gradle استفاده می‌کنند که با جدیدترین نسخه «تبلیغات تلفن همراه Google» ناسازگار است.

برای ساختن Android، نسخه Unity Editor ترجیحی‌تان را انتخاب کنید:

‫۲۰۲۳.۱ یا بالاتر

فعال کردن پیش‌پردازنده ساخت Gradle

پیش‌پردازنده ساخت Gradle به‌طور پیش‌فرض در Unity Editor نسخه 2021.3.41f1 و جدیدتر فعال است. پردازنده به‌طور خودکار همه تنظیمات لازم Gradle و پخش‌کننده را برای پشتیبانی از جدیدترین Google Mobile Ads Unity Plugin در نسخه‌های قبلی Unity Editor اعمال می‌کند.

فعال کردن پیش‌پردازنده ساخت Gradle

پیکربندی دستی تنظیمات Android و Gradle

فعال کردن الگوهای Gradle سفارشی

به تنظیمات پروژه > پخش‌کننده > Android > تنظیمات انتشار > ساخت بروید و Custom Main Gradle Template و Custom Gradle Properties Template را فعال کنید.

فعال کردن الگوهای Gradle سفارشی

تنظیم سطح میانای برنامه‌سازی کاربردی هدف

از منو اصلی، Edit > Project Settings > Player > Android > Other Settings را باز کنید و Target API Level را روی API Level 24 یا بالاتر تنظیم کنید.

2021.3.41f1 - 2022.3

فعال کردن پیش‌پردازنده ساخت Gradle

پیش‌پردازنده ساخت Gradle به‌طور پیش‌فرض در Unity Editor نسخه 2021.3.41f1 و جدیدتر فعال است. پردازنده به‌طور خودکار همه تنظیمات لازم Gradle و پخش‌کننده را برای پشتیبانی از جدیدترین Google Mobile Ads Unity Plugin در نسخه‌های قبلی Unity Editor اعمال می‌کند.

فعال کردن پیش‌پردازنده ساخت Gradle

پیکربندی دستی تنظیمات Android و Gradle

فعال کردن الگوهای Gradle سفارشی

به تنظیمات پروژه > پخش‌کننده > Android > تنظیمات انتشار > ساخت بروید و Custom Main Gradle Template و Custom Gradle Properties Template را فعال کنید.

فعال کردن الگوهای Gradle سفارشی

تنظیم سطح میانای برنامه‌سازی کاربردی هدف

از منو اصلی، 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 را بارگیری و نصب کنید.

فعال کردن الگوهای Gradle سفارشی

به تنظیمات پروژه > پخش‌کننده > Android > تنظیمات انتشار > ساخت بروید و Custom Main Gradle Template و Custom Gradle Properties Template را فعال کنید.

فعال کردن الگوهای Gradle سفارشی

تنظیم سطح میانای برنامه‌سازی کاربردی هدف

از منو اصلی، Edit > Project Settings > Player > Android > Other Settings را باز کنید و Target API Level را روی API Level 35 یا بالاتر تنظیم کنید.

صادر کردن به «استودیو Android»

تنظیمات ساخت Android را با انتخاب File (یا Unity Editor در MacOS) > Build Settings اصلاح کنید و Export Project را علامت بزنید:

صادر کردن پروژه

اگر هشداری دریافت کردید مبنی بر اینکه سطح ۳۵ میانای برنامه‌سازی کاربردی پلاتفرم کیت توسعه نرم‌افزار Android وجود ندارد، گزینه «به‌روزرسانی کیت توسعه نرم‌افزار Android» را انتخاب کنید.

باز کردن «استودیو Android»

این بخش حاوی مراحلی است که در «استودیو Android» انجام می‌شود.

به‌روزرسانی پیکربندی Gradle JDK

تنظیمات Gradle را از File (یا Android Studio در MacOS) > Settings > Build > Execution > Deployment > Build Tools > Gradle باز کنید. منو کرکره‌ای Gradle JDK را پیدا کنید و Gradle JDK را روی JDK 17 یا جدیدتر تنظیم کنید.

به‌روزرسانی پیکربندی Gradle JDK

اگر JDK 17 را نصب نکرده‌اید، گزینه‌های بارگیری JDK را از نوار منو Gradle JDK انتخاب کنید و نسخه سازگار را بارگیری کنید. فروشنده زمان اجرای JetBrains را با پشتیبانی 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»، همگام‌سازی gradle را اجرا کنید، و پروژه را اجرا کنید.