Unity-Android(安卓)支持androidx(兼容andoridx)

问题背景

使用Unity接入安卓库,然后有AndoridX的冲突,提示项目中有support.v4和andoridx冲突了,需要处理!
为了找问题,把Unity项目导出原生项目,然后通过gradlew :dependencies命令查看到,有一些库依赖了support.v4的库;
那好,如果需要把项目处理成支持androidx,解决掉冲突,那有以下两种方法

一、转成Andorid项目,然后利用AndroidStudio从AppCompat转换为AndroidX

使用AndroidStudio 3.x 版本,可以直接操作

在这里插入图片描述

然后,你会发现,除了代码和依赖库修改了,还有一个配置文件也修改了,那就是项目的gradle配置文件,gradle.properties,增加了两个配置
在这里插入图片描述

接下来就自己处理其他冲突吧~

二、直接Unity项目支持AndroidX

如果要让Unity项目直接支持AndoridX,那么需要修改gradle.properties,才能解决androidx兼容问题
那么,我们又知道,Unity直接导出apk包,是通过gradle进行编译的,所以,但是,每次都是在tempDir中处理,不方便我们修改gradle.properties,所以,我们需要写个插件,然后每次打包的时候去修改这个配置文件,加上androidx的支持

查看了Unity的插件方法 Android.IPostGenerateGradleAndroidProject
在构建项目的时候,修改gradle配置文件

步骤

在项目的Asset/Plugins/Editor下新建一个C#文件,命名为SupportAndroidXGradlePropertiesBuildProcessor.cs(当然,类名你可以修改成自己想要的)
我直接贴出这个文件的实现,就是实现了IPostGenerateGradleAndroidProject这个接口

using System.IO;
using UnityEditor.Android;
using UnityEngine;

public class SupportAndroidXGradlePropertiesBuildProcessor : IPostGenerateGradleAndroidProject
{
    public int callbackOrder
    {
        // 同种插件的优先级
        get { return 999; }
    }
    public void OnPostGenerateGradleAndroidProject(string path)
    {
        Debug.Log("Bulid path : " + path);
        string gradlePropertiesFile = path + "/gradle.properties";
        if (File.Exists(gradlePropertiesFile))
        {
            File.Delete(gradlePropertiesFile);
        }
        StreamWriter writer = File.CreateText(gradlePropertiesFile);
        writer.WriteLine("org.gradle.jvmargs=-Xmx4096M");
        writer.WriteLine("android.useAndroidX=true");
        writer.WriteLine("android.enableJetifier=true");
        writer.Flush();
        writer.Close();
    }
}
在这里插入图片描述

好了,这样,你使用Unity直接Build apk的时候,就会把androidx的配置写进去,也就兼容了androidx了!

(做为一个Unity渣渣,今天遇到这个问题,还是想记录下~)

你可能感兴趣的:(Unity-Android(安卓)支持androidx(兼容andoridx))