Android için Unity'yi derleme

Unity Editor, Gradle'ın belirli bir sürümüne kilitlenmiştir. Unity Editor'ın önceki sürümleri, Google Mobil Reklamlar'ın en yeni sürümüyle uyumlu olmayan Gradle'ın önceki sürümlerini kullanır.

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

2023.1 veya daha yeni sürüm

Gradle derleme ön işlemcisini etkinleştirme

Gradle derleme ön 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 son Google Mobile Ads Unity Plugin sürümünü desteklemek için gerekli tüm Gradle ve oynatıcı ayarlarını otomatik olarak uygular.

Gradle derleme ön işlemcisini etkinleştir

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'yi etkinleştirin.

Özel Gradle Şablonlarını Etkinleştirme

Hedef API düzeyini ayarlama

Ana menüden Edit > Project Settings > Player > Android > Other Settings'i (Düzenle > Proje Ayarları > Oynatıcı > Android > Diğer Ayarlar) açın ve Target API Level'ı (Hedef API Düzeyi) API Level 24 (API Düzeyi 24) veya daha yüksek bir değere ayarlayın.

2021.3.41f1 - 2022.3

Gradle derleme ön işlemcisini etkinleştirme

Gradle derleme ön 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 son Google Mobile Ads Unity Plugin sürümünü desteklemek için gerekli tüm Gradle ve oynatıcı ayarlarını otomatik olarak uygular.

Gradle derleme ön işlemcisini etkinleştir

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'yi etkinleştirin.

Özel Gradle Şablonlarını Etkinleştirme

Hedef API düzeyini ayarlama

Ana menüden Edit > Project Settings > Player > Android > Other Settings'i (Düzenle > Proje Ayarları > Oynatıcı > Android > Diğer Ayarlar) açın ve Target API Level'ı (Hedef API Düzeyi) API Level 24 (API Düzeyi 24) veya daha yüksek bir değere ayarlayın.

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

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

`minSDKVersion` öğesini `AndroidManifest.xml` dosyasından 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 sayfanız 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'yi etkinleştirin.

Özel Gradle Şablonlarını Etkinleştirme

Hedef API düzeyini ayarlama

Ana menüden Edit > Project Settings > Player > Android > Other Settings'i (Düzenle > Proje Ayarları > Oynatıcı > Android > Diğer Ayarlar) açın ve Target API Level'ı (Hedef API Düzeyi) API Level 35 (API Düzeyi 35) veya daha yüksek bir değere ayarlayın.

Android Studio'ya aktarma

File (veya MacOS'ta 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 platformu API düzeyi 35'in 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 alır.

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

File (veya macOS'te Android Studio) > Settings > Build > Execution > Deployment > Build Tools > Gradle'a giderek Gradle ayarlarını açın. Gradle JDK açılır menüsünü bulun ve Gradle JDK'yi JDK 17 veya sonraki bir sürümü 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'yi indir) seçeneklerini belirleyin ve uyumlu bir sürüm indirin. Android Studio'nun dağıttığı sürüme uyması için aarch64 destekli JetBrains çalışma zamanı tedarikçisini kullanmanızı öneririz.

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

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

distributionUrl ayarını Gradle 8.1.1 veya daha yeni bir sürümü kullanacak şekilde yapılandırın.

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

launcher/build.gradle adresini güncelleyin

  • launcher/AndroidManifest.xml kaynağındaki package özelliğinin değerini kullanarak namespace özelliğini ayarlayın.
  • sourceCompatibility ve targetCompatibility değerlerini 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üzeyinde settings.gradle 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 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 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.