Android 用 Unity をビルドする

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

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

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 レベル 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 レベル 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 レベル 34 以上に設定します。

対象 API レベルを設定する

Android Studio にエクスポートする

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

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

Android SDK プラットフォーム API レベル 34 が不足しているという警告が表示された場合は、[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 の同期を実行し、プロジェクトを実行します。