Android용 Unity 빌드

Unity 편집기는 특정 버전의 Gradle로 버전 잠깁니다. 이전 버전의 Unity 편집기에서는 최신 버전의 Google 모바일 광고와 호환되지 않는 이전 버전의 Gradle을 사용합니다.

다음 표에는 Unity 편집기에 따라 사용할 수 있는 최대 호환 Google 모바일 광고 플러그인 버전이 나와 있습니다.

Unity 편집기 Google 모바일 광고 Unity 플러그인 버전
2023.1 이상 최신
2021.3.41f1 - 2022.3 9.1.0
2021.3.37f1 이하 8.5.3

이전 Unity 편집기를 비롯하여 최신 Google 모바일 광고 Unity 플러그인을 사용하도록 Gradle을 수동으로 업데이트할 수 있습니다. Android를 빌드하려면 원하는 Unity 편집기 버전을 선택합니다.

기본 요건

계속하기 전에 다음 사항을 확인하세요.

맞춤 Gradle 템플릿 사용 설정

Project Settings(프로젝트 설정) > Player(플레이어) > Android > Publishing Settings(게시 설정) > Build(빌드)로 이동하여 Custom Main Gradle TemplateCustom Gradle Properties Template를 사용 설정합니다.

맞춤 Gradle 템플릿 사용 설정

대상 API 수준 34 설정

기본 메뉴에서 Edit(수정) > Project Settings(프로젝트 설정) > Player(플레이어) > Android > Other Settings(기타 설정)을 열고 Target API Level(타겟 API 수준)을 API Level 34 이상으로 설정합니다.

대상 API 수준 설정

Android 프로젝트 실행

Android 스튜디오에서 Gradle 동기화를 실행하고 프로젝트를 실행합니다.

기본 요건

계속하기 전에 다음 사항을 확인하세요.

맞춤 Gradle 템플릿 사용 설정

Project Settings(프로젝트 설정) > Player(플레이어) > Android > Publishing Settings(게시 설정) > Build(빌드)로 이동하여 Custom Main Gradle TemplateCustom Gradle Properties Template를 사용 설정합니다.

맞춤 Gradle 템플릿 사용 설정

대상 API 수준 34 설정

기본 메뉴에서 Edit(수정) > Project Settings(프로젝트 설정) > Player(플레이어) > Android > Other Settings(기타 설정)을 열고 Target API Level(타겟 API 수준)을 API Level 34 이상으로 설정합니다.

대상 API 수준 설정

Android 스튜디오로 내보내기

File(파일)(또는 macOS의 경우 Unity Editor) > Build Settings(빌드 설정)를 선택하고 Export Project(프로젝트 내보내기)를 선택하여 Android 빌드 설정을 수정합니다.

프로젝트 내보내기

Android 스튜디오 열기

이 섹션에는 Android 스튜디오 내에서 실행되는 단계가 포함되어 있습니다.

Gradle JDK 구성 업데이트

File (또는 MacOS의 Android 스튜디오) > Settings > Build > Execution > Deployment > Build Tools > Gradle에서 Gradle 설정을 엽니다. Gradle JDK 드롭다운을 찾아 Gradle JDK가 JDK 17 이상을 사용하도록 설정합니다.

Gradle JDK 구성 업데이트

JDK 17이 설치되어 있지 않으면 Gradle JDK 메뉴 바에서 JDK 다운로드 옵션을 선택하고 호환되는 버전을 다운로드합니다. Android 스튜디오에서 배포하는 것과 일치하도록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 업데이트

distributionUrl를 설정하여 Gradle 8.1.1 이상을 사용합니다.

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

Android 프로젝트 실행

Android 스튜디오에서 Gradle 동기화를 실행하고 프로젝트를 실행합니다.

기본 요건

계속하기 전에 다음 사항을 확인하세요.

맞춤 Gradle 템플릿 사용 설정

Project Settings(프로젝트 설정) > Player(플레이어) > Android > Publishing Settings(게시 설정) > Build(빌드)로 이동하여 Custom Main Gradle TemplateCustom Gradle Properties Template를 사용 설정합니다.

맞춤 Gradle 템플릿 사용 설정

대상 API 수준 34 설정

기본 메뉴에서 Edit(수정) > Project Settings(프로젝트 설정) > Player(플레이어) > Android > Other Settings(기타 설정)을 열고 Target API Level(타겟 API 수준)을 API Level 34 이상으로 설정합니다.

대상 API 수준 설정

Android 스튜디오로 내보내기

File(파일)(또는 macOS의 경우 Unity Editor) > Build Settings(빌드 설정)를 선택하고 Export Project(프로젝트 내보내기)를 선택하여 Android 빌드 설정을 수정합니다.

프로젝트 내보내기

Android SDK 플랫폼 API 수준 34가 누락되었다는 경고가 표시되면 'Update Android SDK'(Android SDK 업데이트) 옵션을 선택합니다.

Android 스튜디오 열기

이 섹션에는 Android 스튜디오 내에서 실행되는 단계가 포함되어 있습니다.

Gradle JDK 구성 업데이트

File (또는 MacOS의 Android 스튜디오) > Settings > Build > Execution > Deployment > Build Tools > Gradle에서 Gradle 설정을 엽니다. Gradle JDK 드롭다운을 찾아 Gradle JDK가 JDK 17 이상을 사용하도록 설정합니다.

Gradle JDK 구성 업데이트

JDK 17이 설치되어 있지 않으면 Gradle JDK 메뉴 바에서 JDK 다운로드 옵션을 선택하고 호환되는 버전을 다운로드합니다. Android 스튜디오에서 배포하는 것과 일치하도록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 업데이트

distributionUrl를 설정하여 Gradle 8.1.1 이상을 사용합니다.

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

launcher/build.gradle 업데이트

  • launcher/AndroidManifest.xmlpackage 속성 값을 사용하여 namespace 속성을 설정합니다.
  • sourceCompatibilitytargetCompatibility를 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 업데이트

pluginManagementdependencyResolutionManagement 섹션을 설정합니다.


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" 값으로 설정합니다.
  • sourceCompatibilitytargetCompatibilityJavaVersion.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 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 업데이트

namespace 속성을 "com.google.unity.ads" 값으로 설정합니다.


apply plugin: 'android-library'

dependencies {
    implementation fileTree(dir: 'bin', include: ['.jar'])
    implementation fileTree(dir: 'libs', include: ['.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 동기화를 실행하고 프로젝트를 실행합니다.