إنّ Unity Editor مقفل على إصدار معيّن من Gradle. تستخدِم الإصدارات السابقة من Unity Editor إصدارات سابقة من Gradle غير متوافقة مع أحدث إصدار من "إعلانات Google على الأجهزة الجوّالة".
لإنشاء تطبيق Android، اختَر إصدار Unity Editor المفضّل لديك:
2023.1 أو إصدار أحدث
تفعيل معالج ما بعد الإنشاء في Gradle
يكون معالج ما بعد الإنشاء في Gradle مفعَّلاً تلقائيًا في الإصدار 2021.3.41f1 والإصدارات الأحدث من Unity Editor. يطبّق المعالج تلقائيًا جميع إعدادات Gradle وإعدادات المشغّل اللازمة لتوافق أحدث إصدار من حزمة تطوير البرامج "SDK لإعلانات Google على الأجهزة الجوّالة" مع الإصدارات السابقة من Unity Editor.
ضبط إعدادات Android وGradle يدويًا
تفعيل نماذج Gradle المخصّصة
انتقِل إلى إعدادات المشروع > المشغّل > Android > إعدادات النشر > الإنشاء
وفعِّل Custom Main Gradle Template
وCustom Gradle Properties Template
.

ضبط مستوى واجهة برمجة التطبيقات المستهدَف على 34
من القائمة الرئيسية، افتح تعديل > إعدادات المشروع > المشغّل > Android > إعدادات أخرى واضبط مستوى واجهة برمجة التطبيقات المستهدَف على المستوى 34 لواجهة برمجة التطبيقات أو مستوى أعلى.

2021.3.41f1 - 2022.3
تفعيل معالج ما بعد الإنشاء في Gradle
يكون معالج ما بعد الإنشاء في Gradle مفعَّلاً تلقائيًا في الإصدار 2021.3.41f1 والإصدارات الأحدث من Unity Editor. يطبّق المعالج تلقائيًا جميع إعدادات Gradle وإعدادات المشغّل اللازمة لتوافق أحدث إصدار من حزمة تطوير البرامج "SDK لإعلانات Google على الأجهزة الجوّالة" مع الإصدارات السابقة من Unity Editor.
ضبط إعدادات Android وGradle يدويًا
تفعيل نماذج Gradle المخصّصة
انتقِل إلى إعدادات المشروع > المشغّل > Android > إعدادات النشر > الإنشاء
وفعِّل Custom Main Gradle Template
وCustom Gradle Properties Template
.

ضبط مستوى واجهة برمجة التطبيقات المستهدَف على 34
من القائمة الرئيسية، افتح تعديل > إعدادات المشروع > المشغّل > Android > إعدادات أخرى واضبط مستوى واجهة برمجة التطبيقات المستهدَف على المستوى 34 لواجهة برمجة التطبيقات أو مستوى أعلى.

إضافة قائمة التجاهل في 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 وثبِّته.
- اختياري: للحصول على تفاصيل حول إنشاء تطبيقات لنظام التشغيل Android، يُرجى الاطّلاع على إصدارات Java في إصدارات Android.
تفعيل نماذج Gradle المخصّصة
انتقِل إلى إعدادات المشروع > المشغّل > Android > إعدادات النشر > الإنشاء
وفعِّل Custom Main Gradle Template
وCustom Gradle Properties Template
.

ضبط مستوى واجهة برمجة التطبيقات المستهدَف على 34
من القائمة الرئيسية، افتح تعديل > إعدادات المشروع > المشغّل > Android > إعدادات أخرى واضبط مستوى واجهة برمجة التطبيقات المستهدَف على المستوى 34 لواجهة برمجة التطبيقات أو مستوى أعلى.

التصدير إلى Android Studio
عدِّل إعدادات إصدار Android من خلال النقر على ملف (File) (أو Unity Editor على نظام التشغيل MacOS) > إعدادات الإصدار (Build Settings) ووضع علامة في مربّع "تصدير المشروع" (Export Project):

إذا تلقّيت تحذيرًا بأنّ مستوى واجهة برمجة التطبيقات 34 لمنصة حزمة تطوير البرامج (SDK) لنظام التشغيل Android غير متوفّر، اختَر الخيار تحديث حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
فتح "استوديو Android"
يحتوي هذا القسم على خطوات يتم تنفيذها في "استوديو Android".
تعديل إعدادات Gradle JDK
افتح إعدادات Gradle من خلال ملف (أو "استوديو Android" على نظام التشغيل macOS) > الإعدادات > الإنشاء > التنفيذ > النشر > أدوات الإنشاء > Gradle. ابحث عن القائمة المنسدلة Gradle JDK واضبطها على استخدام الإصدار 17 أو إصدار أحدث من JDK.

إذا لم يكن لديك الإصدار 17 من JDK مثبّتًا، اختَر الخيار تنزيل JDK من شريط قائمة Gradle JDK ونزِّل إصدارًا متوافقًا. ننصح باستخدام موفّر JetBrains runtime الذي يتوافق مع aarch64، وذلك ليتوافق مع ما يوزّعه "استوديو Android".
تعديل ملف 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
لاستخدام الإصدار 8.1.1 من Gradle أو إصدار أحدث.
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 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 } }
تشغيل مشروع Android
من "استوديو Android"، نفِّذ عملية مزامنة Gradle، ثم نفِّذ المشروع.