Android-এর জন্য Unity তৈরি করা

Unity Editor-এর ভার্সন Gradle-এর নির্দিষ্ট ভার্সনে লক করা আছে। Unity Editor-এর আগের ভার্সনগুলি Gradle-এর আগের ভার্সন ব্যবহার করে যা Google Mobile Ads-এর লেটেস্ট ভার্সনের সাথে মানানসই নয়।

Android তৈরি করতে, আপনার পছন্দের Unity Editor ভার্সন বেছে নিন:

2023.1 বা তার পরের যেকোনও ভার্সন

Gradle বিল্ড প্রি-প্রসেসর চালু করুন

Unity Editor 2021.3.41f1 এবং তার পরবর্তী ভার্সনে Gradle বিল্ড প্রিপ্রসেসর ডিফল্ট হিসেবে চালু থাকে। Unity Editor-এর আগের ভার্সনে লেটেস্ট Google Mobile Ads Unity Plugin-এর জন্য প্রসেসর অটোমেটিক সব প্রয়োজনীয় Gradle ও প্লেয়ার সেটিংস প্রয়োগ করে।

Gradle বিল্ড প্রিপ্রসেসর চালু করুন

Android এবং Gradle সেটিংস ম্যানুয়ালি কনফিগার করুন

কাস্টম Gradle টেমপ্লেট চালু করুন

প্রোজেক্ট সেটিংস > প্লেয়ার > Android > প্রকাশনা সেটিংস > বিল্ড বিকল্পে যান এবং Custom Main Gradle Template ও Custom Gradle Properties Template চালু করুন।

কাস্টম Gradle টেমপ্লেট চালু করুন

টার্গেট API লেভেল সেট করুন

প্রধান মেনু থেকে এডিট করুন > প্রোজেক্ট সেটিংস > প্লেয়ার > Android > অন্যান্য সেটিংস বিকল্পে যান এবং টার্গেট API লেভেল API লেভেল ২৪ বা তার বেশি হিসেবে সেট করুন।

2021.3.41f1 - 2022.3

Gradle বিল্ড প্রি-প্রসেসর চালু করুন

Unity Editor 2021.3.41f1 এবং তার পরবর্তী ভার্সনে Gradle বিল্ড প্রিপ্রসেসর ডিফল্ট হিসেবে চালু থাকে। Unity Editor-এর আগের ভার্সনে লেটেস্ট Google Mobile Ads Unity Plugin-এর জন্য প্রসেসর অটোমেটিক সব প্রয়োজনীয় Gradle ও প্লেয়ার সেটিংস প্রয়োগ করে।

Gradle বিল্ড প্রিপ্রসেসর চালু করুন

Android এবং Gradle সেটিংস ম্যানুয়ালি কনফিগার করুন

কাস্টম Gradle টেমপ্লেট চালু করুন

প্রোজেক্ট সেটিংস > প্লেয়ার > Android > প্রকাশনা সেটিংস > বিল্ড বিকল্পে যান এবং Custom Main Gradle Template ও Custom Gradle Properties Template চালু করুন।

কাস্টম Gradle টেমপ্লেট চালু করুন

টার্গেট API লেভেল সেট করুন

প্রধান মেনু থেকে এডিট করুন > প্রোজেক্ট সেটিংস > প্লেয়ার > Android > অন্যান্য সেটিংস বিকল্পে যান এবং টার্গেট API লেভেল API লেভেল ২৪ বা তার বেশি হিসেবে সেট করুন।

`gradleTemplate.properties`-এ জেটিফায়ার ইগনোর লিস্ট যোগ করুন

Assets/Plugins/Android/gradleTemplate.properties এডিট করুন এবং নিম্নলিখিত লাইন যোগ করুন:

  android.jetifier.ignorelist=annotation-experimental-1.4.0.aar

`AndroidManifest.xml` থেকে `minSDKVersion` সরান

Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml এডিট করুন এবং uses-sdk নোড থেকে android:minSdkVersion="21" সরিয়ে দিন। আপনার 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 টেমপ্লেট চালু করুন

টার্গেট API লেভেল সেট করুন

প্রধান মেনু থেকে এডিট করুন > প্রোজেক্ট সেটিংস > প্লেয়ার > Android > অন্যান্য সেটিংস বিকল্পে গিয়ে টার্গেট API লেভেল API লেভেল ৩৫ বা তার বেশি হিসেবে সেট করুন।

Android Studio-তে এক্সপোর্ট করুন

ফাইল (বা MacOS-এ Unity Editor) > বিল্ড সেটিংস বেছে নিয়ে Android বিল্ড সেটিংস পরিবর্তন করুন এবং এক্সপোর্ট প্রোজেক্ট চেক করুন:

প্রোজেক্ট এক্সপোর্ট করুন

Android SDK প্ল্যাটফর্ম API লেভেল ৩৫ উপলভ্য নেই বলে কোনও সতর্কতা পেলে, 'Android SDK আপডেট করুন' বিকল্প বেছে নিন।

Android Studio খুলুন

এই বিভাগে Android Studio-তে করা ধাপগুলি রয়েছে।

Gradle JDK কনফিগারেশন আপডেট করুন

Gradle সেটিংস খুলুন ফাইল (বা MacOS-এ Android Studio) > সেটিংস > বিল্ড > এক্সিকিউশন > ডেপ্লয়মেন্ট > বিল্ড টুল > Gradle থেকে। Gradle JDK ড্রপ-ডাউন খুঁজে নিন এবং JDK 17 বা তার পরবর্তী ভার্সন ব্যবহার করার জন্য Gradle JDK সেট করুন।

Gradle JDK কনফিগারেশন আপডেট করুন

আপনার JDK 17 ইনস্টল করা না থাকলে, Gradle JDK মেনু বার থেকে JDK ডাউনলোড করুন বিকল্প বেছে নিন এবং একটি মানানসই ভার্সন ডাউনলোড করুন। Android Studio যা ডিস্ট্রিবিউট করে তার সাথে ম্যাচ করার জন্য, aarch64 সাপোর্ট সহ JetBrains রানটাইম ভেন্ডর ব্যবহার করার সাজেশন আমরা দিই।

প্রোজেক্ট-লেভেল 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 আপডেট করুন

Gradle 8.1.1 বা তার পরবর্তী ভার্সন ব্যবহার করতে distributionUrl সেট করুন।

distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip

launcher/build.gradle আপডেট করুন

  • launcher/AndroidManifest.xml থেকে package অ্যাট্রিবিউটের ভ্যালু ব্যবহার করে namespace অ্যাট্রিবিউট সেট করুন
  • 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 আপডেট করুন

  • "com.unity3d.player" ভ্যালু দিয়ে namespace সেট করুন
  • 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 Studio থেকে, gradle sync রান করুন এবং প্রোজেক্ট রান করুন।