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渣渣,今天遇到这个问题,还是想记录下~)