ساخت یونیتی برای اندروید

ویرایشگر یونیتی به نسخه خاصی از Gradle قفل شده است. نسخه‌های قبلی ویرایشگر یونیتی از نسخه‌های قدیمی‌تر Gradle استفاده می‌کنند که با آخرین نسخه Google Mobile Ads سازگار نیستند.

برای ساخت اندروید، نسخه ویرایشگر یونیتی مورد نظر خود را انتخاب کنید:

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

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

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

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

تنظیمات اندروید و گریدل را به صورت دستی پیکربندی کنید

فعال کردن قالب‌های سفارشی Gradle

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

فعال کردن قالب‌های سفارشی Gradle

تنظیم API هدف سطح ۳۴

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

تنظیم سطح API هدف

‎۲۰۲۱.۳.۴۱f۱ - ۲۰۲۲.۳

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

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

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

تنظیمات اندروید و گریدل را به صورت دستی پیکربندی کنید

فعال کردن قالب‌های سفارشی Gradle

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

فعال کردن قالب‌های سفارشی Gradle

تنظیم API هدف سطح ۳۴

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

تنظیم سطح API هدف

لیست نادیده گرفتن 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>

۲۰۱۹.۴ - ۲۰۲۱.۳.۳۷f۱

پیش‌نیازها

قبل از ادامه، مطمئن شوید که موارد زیر را دارید:

فعال کردن قالب‌های سفارشی Gradle

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

فعال کردن قالب‌های سفارشی Gradle

تنظیم API هدف سطح ۳۴

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

تنظیم سطح API هدف

اکسپورت به اندروید استودیو

تنظیمات ساخت اندروید را با انتخاب File (یا Unity Editor در MacOS) > Build Settings تغییر دهید و Export Project را تیک بزنید:

پروژه صادرات

اگر هشداری مبنی بر فقدان API سطح ۳۴ پلتفرم SDK اندروید دریافت کردید، گزینه «به‌روزرسانی SDK اندروید» را انتخاب کنید.

اندروید استودیو را باز کنید

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

پیکربندی 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 runtime vendor با پشتیبانی aarch64 را توصیه می‌کنیم تا با آنچه اندروید استودیو توزیع می‌کند، مطابقت داشته باشد.

به‌روزرسانی 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 روی جاوا ۱۷
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 سطح پروژه را به‌روزرسانی کنید.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 34
        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
    }
}

اجرای پروژه اندروید

از اندروید استودیو، gradle sync را اجرا کنید و پروژه را اجرا کنید .