Android için Unity'yi derleme

Unity Editor, belirli bir Gradle sürümüne kilitlenmiştir. Unity Editor'ın önceki sürümlerinde, Google Mobile Ads'in en son sürümüyle uyumlu olmayan Gradle'ın önceki sürümleri kullanılır.

Android'i oluşturmak için tercih ettiğiniz Unity Editor sürümünü seçin:

2023.1 veya sonraki sürümler

Gradle derleme sonrası işlemcisini etkinleştirme

Gradle derleme sonrası işlemcisi, Unity Editor 2021.3.41f1 ve sonraki sürümlerde varsayılan olarak etkindir. İşlemci, Unity Editor'ın önceki sürümlerinde en yeni Google Mobile Ads SDK'sını desteklemek için gereken tüm Gradle ve oynatıcı ayarlarını otomatik olarak uygular.

Gradle derleme sonrası işlemcisini etkinleştirme

Android ve Gradle ayarlarını manuel olarak yapılandırma

Özel Gradle Şablonlarını Etkinleştirme

Project Settings > Player > Android > Publishing Settings > Build'e (Proje Ayarları > Oynatıcı > Android > Yayınlama Ayarları > Derleme) gidin ve Custom Main Gradle Template ile Custom Gradle Properties Template'ü etkinleştirin.

Özel Gradle Şablonlarını Etkinleştirme

Hedef API düzeyi 34'ü ayarlama

Ana menüden Düzenle > Proje Ayarları > Oynatıcı > Android > Diğer Ayarlar'ı açın ve Hedef API Seviyesi'ni API Seviyesi 34 veya daha yüksek bir seviyeye ayarlayın.

Hedef API düzeyini ayarlama

2021.3.41f1 - 2022.3

Gradle derleme sonrası işlemcisini etkinleştirme

Gradle derleme sonrası işlemcisi, Unity Editor 2021.3.41f1 ve sonraki sürümlerde varsayılan olarak etkindir. İşlemci, Unity Editor'ın önceki sürümlerinde en yeni Google Mobile Ads SDK'sını desteklemek için gereken tüm Gradle ve oynatıcı ayarlarını otomatik olarak uygular.

Gradle derleme sonrası işlemcisini etkinleştirme

Android ve Gradle ayarlarını manuel olarak yapılandırma

Özel Gradle Şablonlarını Etkinleştirme

Project Settings > Player > Android > Publishing Settings > Build'e (Proje Ayarları > Oynatıcı > Android > Yayınlama Ayarları > Derleme) gidin ve Custom Main Gradle Template ile Custom Gradle Properties Template'ü etkinleştirin.

Özel Gradle Şablonlarını Etkinleştirme

Hedef API düzeyi 34'ü ayarlama

Ana menüden Düzenle > Proje Ayarları > Oynatıcı > Android > Diğer Ayarlar'ı açın ve Hedef API Seviyesi'ni API Seviyesi 34 veya daha yüksek bir seviyeye ayarlayın.

Hedef API düzeyini ayarlama

`gradleTemplate.properties` dosyasına Jetifier yoksayılanlar listesini ekleyin.

Assets/Plugins/Android/gradleTemplate.properties dosyasını düzenleyin ve aşağıdaki satırı ekleyin:

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

`AndroidManifest.xml` dosyasından `minSDKVersion` öğesini kaldırın.

Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml öğesini düzenleyin ve uses-sdk düğümünden android:minSdkVersion="21" öğesini kaldırın. AndroidManifest.xml öğeniz aşağıdaki gibi görünmelidir:

<?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

Ön koşullar

Devam etmeden önce aşağıdakilere sahip olduğunuzdan emin olun:

Özel Gradle Şablonlarını Etkinleştirme

Project Settings > Player > Android > Publishing Settings > Build'e (Proje Ayarları > Oynatıcı > Android > Yayınlama Ayarları > Derleme) gidin ve Custom Main Gradle Template ile Custom Gradle Properties Template'ü etkinleştirin.

Özel Gradle Şablonlarını Etkinleştirme

Hedef API düzeyi 34'ü ayarlama

Ana menüden Düzenle > Proje Ayarları > Oynatıcı > Android > Diğer Ayarlar'ı açın ve Hedef API Seviyesi'ni API Seviyesi 34 veya daha yüksek bir seviyeye ayarlayın.

Hedef API düzeyini ayarlama

Android Studio'ya aktarma

File (veya MacOS'te Unity Editor) > Build Settings'i seçerek Android derleme ayarlarını değiştirin ve Export Project'i işaretleyin:

Projeyi dışa aktarma

Android SDK platform API düzeyi 34'ün eksik olduğuna dair bir uyarı alırsanız "Android SDK'yı güncelle" seçeneğini belirleyin.

Android Studio'yu açın.

Bu bölümde, Android Studio'da gerçekleştirilen adımlar yer almaktadır.

Gradle JDK yapılandırmasını güncelleme

Gradle ayarlarını File (veya MacOS'te Android Studio) > Settings > Build > Execution > Deployment > Build Tools > Gradle'dan açın. Gradle JDK açılır listesini bulun ve Gradle JDK'yı JDK 17 veya sonraki sürümleri kullanacak şekilde ayarlayın.

Gradle JDK yapılandırmasını güncelleme

JDK 17 yüklü değilse Gradle JDK menü çubuğundan Download JDK (JDK'yı İndir) seçeneğini belirleyip uyumlu bir sürümü indirin. Android Studio'nun dağıttığıyla eşleşmesi için aarch64 desteği olan JetBrains çalışma zamanı tedarikçisini öneririz.

Proje düzeyindeki build.gradle dosyasını güncelleyin.

Gradle araçları sürümünü 8.1.1 veya daha yeni bir sürüme ayarlayın.

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 adresini güncelleyin

Gradle 8.1.1 veya daha yeni bir sürümü kullanmak için distributionUrl öğesini ayarlayın.

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

launcher/build.gradle adresini güncelleyin

  • namespace özelliğini, launcher/AndroidManifest.xml'deki package özelliğinin değerini kullanarak ayarlayın.
  • sourceCompatibility ve targetCompatibility öğelerini Java 17 olarak ayarlayın.
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'

Proje düzeyindeki settings.gradle ayarlarını güncelleme

pluginManagement ve dependencyResolutionManagement bölümlerini ayarlayın.

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 dosyasını güncelleme

  • namespace değerini "com.unity3d.player" olarak ayarlayın.
  • sourceCompatibility ve targetCompatibility değerlerini JavaVersion.VERSION_17 olarak ayarlayın.
    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 dosyasını güncelleyin.

namespace özelliğini "com.google.unity.ads" değeriyle ayarlayın.

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 projesini çalıştırma

Android Studio'da gradle senkronizasyonunu çalıştırın ve projeyi çalıştırın.