الإصدارات الثابتة من "محرّر Unity" مرتبطة بإصدار محدّد من Gradle. تستخدم الإصدارات القديمة من "محرّر Unity" إصدارات قديمة من Gradle غير متوافقة مع أحدث إصدار من "إعلانات Google على الأجهزة الجوّالة".
لإنشاء تطبيق Android، اختَر إصدار "محرّر Unity" المفضّل لديك:
الإصدار 2023.1 أو الإصدارات الأحدث
تفعيل أداة المعالجة المسبقة لإنشاء Gradle
تكون أداة المعالجة المسبقة لإنشاء Gradle مفعّلة تلقائيًا في "محرّر Unity" 2021.3.41f1 والإصدارات الأحدث. تطبّق أداة المعالجة تلقائيًا جميع إعدادات Gradle وإعدادات المشغّل اللازمة لدعم أحدث إصدار Google Mobile Ads Unity Plugin على الإصدارات القديمة من "محرّر Unity".
إعداد إعدادات Android وGradle يدويًا
تفعيل نماذج Gradle المخصّصة
انتقِل إلى إعدادات المشروع > المشغّل > Android > إعدادات النشر > الإنشاء
وفعِّل Custom Main Gradle Template وCustom Gradle Properties Template.
ضبط مستوى واجهة برمجة التطبيقات المستهدَف
من القائمة الرئيسية، افتح تعديل > إعدادات المشروع > المشغّل > Android > إعدادات أخرى واضبط مستوى واجهة برمجة التطبيقات المستهدَف على مستوى واجهة برمجة التطبيقات 23 أو مستوى أعلى.
الإصدارات من 2021.3.41f1 إلى 2022.3
تفعيل أداة المعالجة المسبقة لإنشاء Gradle
تكون أداة المعالجة المسبقة لإنشاء Gradle مفعّلة تلقائيًا في "محرّر Unity" 2021.3.41f1 والإصدارات الأحدث. تطبّق أداة المعالجة تلقائيًا جميع إعدادات Gradle وإعدادات المشغّل اللازمة لدعم أحدث إصدار Google Mobile Ads Unity Plugin على الإصدارات القديمة من "محرّر Unity".
إعداد إعدادات Android وGradle يدويًا
تفعيل نماذج Gradle المخصّصة
انتقِل إلى إعدادات المشروع > المشغّل > Android > إعدادات النشر > الإنشاء
وفعِّل Custom Main Gradle Template وCustom Gradle Properties Template.
ضبط مستوى واجهة برمجة التطبيقات المستهدَف
من القائمة الرئيسية، افتح تعديل > إعدادات المشروع > المشغّل > Android > إعدادات أخرى واضبط مستوى واجهة برمجة التطبيقات المستهدَف على مستوى واجهة برمجة التطبيقات 23 أو مستوى أعلى.
إضافة قائمة التجاهل في 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.
ضبط مستوى واجهة برمجة التطبيقات المستهدَف
من القائمة الرئيسية، افتح تعديل > إعدادات المشروع > المشغّل > Android > إعدادات أخرى واضبط مستوى واجهة برمجة التطبيقات المستهدَف على مستوى واجهة برمجة التطبيقات 35 أو مستوى أعلى.
التصدير إلى "استوديو Android"
عدِّل إعدادات إنشاء تطبيقات Android من خلال النقر على ملف (أو "محرّر Unity" على نظام التشغيل MacOS) > إعدادات الإنشاء وضَع علامة في مربّع "تصدير المشروع":
إذا ظهر لك تحذير يشير إلى أنّ مستوى واجهة برمجة التطبيقات 35 لمنصة Android SDK غير متوفّر، اختَر الخيار 'تعديل Android SDK'.
فتح "استوديو Android"
يحتوي هذا القسم على خطوات يتم تنفيذها في "استوديو Android".
تعديل إعدادات Gradle JDK
افتح إعدادات Gradle من ملف (أو "استوديو Android" على نظام التشغيل MacOS) > الإعدادات > الإنشاء > التنفيذ > النشر > أدوات الإنشاء > Gradle. حدِّد القائمة المنسدلة Gradle JDK واضبط Gradle JDK على استخدام JDK 17 أو إصدار أحدث.
إذا لم يكن JDK 17 مثبّتًا، اختَر الخيار تنزيل JDK من شريط قائمة Gradle JDK ونزِّل إصدارًا متوافقًا. ننصح باستخدام JetBrains runtime vendor مع دعم 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 على استخدام 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، و شغِّل المشروع.