Android 用 Unity をビルドする

Unity エディタは、特定のバージョンの Gradle にバージョンロックされています。以前のバージョンの Unity エディタでは、以前のバージョンの Gradle が使用されていますが、これは最新バージョンの Google Mobile Ads と互換性がありません。

次の表に、Unity Editor に基づいて使用できる Google Mobile Ads プラグインの最大互換バージョンを示します。

Unity エディタ Google モバイル広告 Unity プラグインのバージョン
2023.1 以降 最新
2021.3.41f1 - 2022.3 9.1.0
2021.3.37f1 以前 8.5.3

古い Unity Editor でも、最新の Google Mobile Ads Unity プラグインを使用するように Gradle を手動で更新できます。Android をビルドするには、使用する Unity エディタのバージョンを選択します。

2023.1 以降

前提条件

続行する前に、次の準備をしてください。

カスタム Gradle テンプレートを有効にする

[プロジェクト設定] > [プレーヤー] > [Android] > [公開設定] > [ビルド] に移動し、Custom Main Gradle TemplateCustom Gradle Properties Template を有効にします。

カスタム Gradle テンプレートを有効にする

対象 API レベル 34 を設定する

メインメニューから [Edit] > [Project Settings] > [Player] > [Android] > [Other Settings] を開き、[Target API Level] を API Level 34 以上に設定します。

対象 API レベルを設定する

Android プロジェクトを実行する

Android Studio で Gradle の同期を実行し、プロジェクトを実行します。

2021.3.4f1 - 2022.3

前提条件

続行する前に、次の準備をしてください。

  • Android Studio の最新の安定版をダウンロードしてインストールします。

カスタム Gradle テンプレートを有効にする

[プロジェクト設定] > [プレーヤー] > [Android] > [公開設定] > [ビルド] に移動し、Custom Main Gradle TemplateCustom Gradle Properties Template を有効にします。

カスタム Gradle テンプレートを有効にする

対象 API レベル 34 を設定する

メインメニューから [Edit] > [Project Settings] > [Player] > [Android] > [Other Settings] を開き、[Target API Level] を API Level 34 以上に設定します。

対象 API レベルを設定する

Android Studio にエクスポートする

[File](macOS の場合は [Unity Editor])> [Build Settings] を選択して、[Export Project] をオンにして、Android ビルド設定を変更します。

プロジェクトをエクスポートする

Android Studio を開く

このセクションでは、Android Studio 内で行う手順について説明します。

Gradle JDK 構成を更新する

[File](または macOS の場合は [Android Studio])> [Settings] > [Build] > [Execution] > [Deployment] > [Build Tools] > [Gradle] で Gradle 設定を開きます。[Gradle JDK] プルダウンを見つけて、JDK 17 以降を使用するように Gradle JDK を設定します。

Gradle JDK 構成を更新する

JDK 17 がインストールされていない場合は、Gradle JDK のメニューバーから [Download 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

Android プロジェクトを実行する

Android Studio で Gradle の同期を実行し、プロジェクトを実行します。

2021.3.37f1 - 2019.4

前提条件

続行する前に、次の準備をしてください。

  • Android Studio の最新の安定版をダウンロードしてインストールします。

カスタム Gradle テンプレートを有効にする

[プロジェクト設定] > [プレーヤー] > [Android] > [公開設定] > [ビルド] に移動し、Custom Main Gradle TemplateCustom Gradle Properties Template を有効にします。

カスタム Gradle テンプレートを有効にする

対象 API レベル 34 を設定する

メインメニューから [Edit] > [Project Settings] > [Player] > [Android] > [Other Settings] を開き、[Target API Level] を API Level 34 以上に設定します。

対象 API レベルを設定する

Android Studio にエクスポートする

[File](macOS の場合は [Unity Editor])> [Build Settings] を選択して、[Export Project] をオンにして、Android ビルド設定を変更します。

プロジェクトをエクスポートする

Android SDK Platform API レベル 34 が不足しているという警告が表示された場合は、[Update Android SDK] オプションを選択します。

Android Studio を開く

このセクションでは、Android Studio 内で行う手順について説明します。

Gradle JDK 構成を更新する

[File](または macOS の場合は [Android Studio])> [Settings] > [Build] > [Execution] > [Deployment] > [Build Tools] > [Gradle] で Gradle 設定を開きます。[Gradle JDK] プルダウンを見つけて、JDK 17 以降を使用するように Gradle JDK を設定します。

Gradle JDK 構成を更新する

JDK 17 がインストールされていない場合は、Gradle JDK のメニューバーから [Download 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.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 を更新する

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" に設定します。
  • 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 Studio で Gradle の同期を実行し、プロジェクトを実行します。