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