16
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

UnityでのAndroidX対応(AndroidStudio未使用)

Last updated at Posted at 2019-07-27

はじめに

AdMobで play-services-adsのバージョン18.0.0以降を使用する場合は AndroidXへの移行が必須となる
AndroidXとは

AndroidStudioを用いたAndroidXへの移行はこちらのサイトに説明があるが、AndroidStudioを用いずにUnity単体での対応方法がなかったためメモしておく

実装環境

  • Unity 2019.1.7f1
  • Google Mobile Ads Unity Plugin v3.17

対処方法

- build.gradleファイルを書き換えるスクリプトを記述する

  • templateファイルにAndroidX用の記載を追加する
  • AndroidSupportのライブラリをAndroidX用に変更する

templateファイルにAndroidX用の記載を追加する

  • Unityメニューバーより、File→Build Settings→Player Settings→ Androidマークのタブをクリック→Publish Settingsと遷移させ、Custom Gradle Properties Template の部分にチェックを入れる

SS.png

  • 該当箇所にファイルが生成されている(上記の例では Assets/Plugins/Android/gradleTemplate.properties)ので、以下の項目を追記する
android.useAndroidX=true
android.enableJetifier=true

AndroidSupportのライブラリをAndroidX用に変更

バージョンや名前は2019年7月時点で最新のもの、最新状態はmvnrepository等のサイトで調べる

旧版
    compile group: 'com.android.support', name: 'customtabs', version: '28.0.0'
    compile group: 'com.android.support', name: 'support-annotations', version: '28.0.0'
    compile group: 'com.android.support', name: 'support-compat', version: '28.0.0'
    compile group: 'com.android.support', name: 'support-core-ui', version: '28.0.0'
    compile group: 'com.android.support', name: 'support-core-utils', version: '28.0.0'
    compile group: 'com.android.support', name: 'support-fragment', version: '28.0.0'
    compile group: 'com.android.support', name: 'support-media-compat', version: '28.0.0'
    compile group: 'com.android.support', name: 'support-v4', version: '28.0.0'
    compile group: 'com.android.support', name: 'recyclerview-v7', version: '28.0.0'
    compile group: 'com.android.support', name: 'appcompat-v7', version: '28.0.0'
    compile group: 'com.android.support', name: 'cardview-v7', version: '28.0.0'
    compile group: 'com.android.support.constraint', name: 'constraint-layout-solver', version: '1.1.3'
    compile group: 'com.android.support.constraint', name: 'constraint-layout', version: '1.1.3'
AndroidX対応版
    compile group: 'androidx.browser', name: 'browser', version: '1.0.0'
    compile group: 'androidx.annotation', name: 'annotation', version: '1.1.0'
    compile group: 'androidx.core', name: 'core', version: '1.1.0-rc02'
    compile group: 'androidx.legacy', name: 'legacy-support-core-ui', version: '1.0.0'
    compile group: 'androidx.legacy', name: 'legacy-support-core-utils', version: '1.0.0'
    compile group: 'androidx.fragment', name: 'fragment', version: '1.1.0-rc03'
    compile group: 'androidx.media', name: 'media', version: '1.1.0-rc01'
    compile group: 'androidx.legacy', name: 'legacy-support-v4', version: '1.0.0'
    compile group: 'androidx.recyclerview', name: 'recyclerview', version: '1.1.0-beta01'
    compile group: 'androidx.appcompat', name: 'appcompat', version: '1.1.0-rc01'
    compile group: 'androidx.cardview', name: 'cardview', version: '1.0.0'
    compile group: 'androidx.constraintlayout', name: 'constraintlayout-solver', version: '2.0.0-beta2'
    compile group: 'androidx.constraintlayout', name: 'constraintlayout', version: '2.0.0-beta2'

補足

build.gradleファイルを書き換える方法

gradleTemplate.properties ファイルを使用せず、ビルド時に自動で build.gradle ファイルを書き換える方法を参考までに載せておく
※但し、Unity2020では正しく動作しないためあくまで参考資料

Editor/Build/AndroidPostBuildProcessor
using System.IO;
using UnityEditor.Android;

namespace Editor.Build
{
    public class AndroidPostBuildProcessor : IPostGenerateGradleAndroidProject
    {
        /// <summary>
        /// 実行順を指定(0がデフォルト、低いほど先に実行される)
        /// </summary>
        public int callbackOrder => 999;
        
        /// <summary>
        /// build.gradleをビルド時に書き換える
        /// </summary>
        void IPostGenerateGradleAndroidProject.OnPostGenerateGradleAndroidProject(string path)
        {
            var gradlePropertiesFile = path + "/gradle.properties";
            if (File.Exists(gradlePropertiesFile))
            {
                File.Delete(gradlePropertiesFile);
            }

            var writer = File.CreateText(gradlePropertiesFile);
            writer.WriteLine("org.gradle.jvmargs=-Xmx4096M");
            writer.WriteLine("android.useAndroidX=true");
            writer.WriteLine("android.enableJetifier=true");
            writer.Flush();
            writer.Close();
        }
    }
}
16
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?