美文网首页
unity3d修改gradle.properties,解决and

unity3d修改gradle.properties,解决and

作者: 忆中异 | 来源:发表于2021-05-07 09:22 被阅读0次

问题描述

Google Firebase 使用了AndroidX库,然而各种第三方库还有使用support的库。Androidx是新版的support。编译中会出现冲突

解决方法

  1. gradle 升级到 3.2.+
  2. 依赖的support都修改到28.+ (注意各库版本要一致)
  3. gradle.properties 添加配置 android.useAndroidX=true android.enableJetifier=true

遇到的问题

  1. unity2018+ 提供了IPostGenerateGradleAndroidProject来对gradle工程修改。工程使用的是unity2017不支持
  2. IPostBuildIPreBuild都不能实现
  3. 想要从gradle.build来解决,理解深度不够

有重要帮助的页面

  1. https://stackoverflow.com/questions/54186051/is-there-a-way-to-change-the-gradle-properties-file-in-unity/58004419#58004419
  2. https://github.com/googlesamples/unity-jar-resolver/issues/241#issuecomment-514995546

最终解决方法

最优方案,修改gradle

([rootProject] + (rootProject.subprojects as List)).each {
    ext {
        it.setProperty("android.useAndroidX", true)
        it.setProperty("android.enableJetifier", true)
    }
}

符合unity2018+的优美点儿的方案

public class AndroidPostBuildProcessor : IPostGenerateGradleAndroidProject
{
    public int callbackOrder
    {
        get
        {
            return 999;
        }
    }


    void IPostGenerateGradleAndroidProject.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();

    }
}

转载于https://zhuanlan.zhihu.com/p/83162670

相关文章

网友评论

      本文标题:unity3d修改gradle.properties,解决and

      本文链接:https://www.haomeiwen.com/subject/hghsdltx.html