欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-25 10:06:16
...

问题背景

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

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

使用AndroidStudio 3.x 版本,可以直接操作
Unity-Android(安卓)支持androidx(兼容andoridx)
然后,你会发现,除了代码和依赖库修改了,还有一个配置文件也修改了,那就是项目的gradle配置文件,gradle.properties,增加了两个配置
Unity-Android(安卓)支持androidx(兼容andoridx)
接下来就自己处理其他冲突吧~

二、直接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-Android(安卓)支持androidx(兼容andoridx)
好了,这样,你使用Unity直接Build apk的时候,就会把androidx的配置写进去,也就兼容了androidx了!

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