Unity打包报错OBSOLETE - Providing Android resources in Assets/Plugins/Android/res is deprecated, please

2022.11.17更新

修改aar方式代价有点大,最近发现一个新方法能更方便解决这个问题。原理就是监听打包事件,在打包快结束的时候把res目录手动拷过去一起打包出apk。因为unity的流程是先打包出Gradle工程,然后会搜索实现了IPostGenerateGradleAndroidProject接口的类进行调用,再进行出包。

详细流程如下:

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

class ResPostGenerateGradleAndroidProject : IPostGenerateGradleAndroidProject
{
    //这个是res所在的目录
    private string sourceFolder = Application.dataPath.Replace("/Assets", "") + "/PlatformSources/";
    public int callbackOrder { get; }
            
    public void OnPostGenerateGradleAndroidProject(string path)
    {
        CopyFolder (sourceFolder, path+"/");
    }
            
    public void CopyFolder(string from, string to)
    {
        if (!Directory.Exists(to))
            Directory.CreateDirectory(to);

        // 子文件夹
        foreach (string sub in Directory.GetDirectories(from))
            CopyFolder(sub + "/", to + Path.GetFileName(sub) + "/");

        // 文件
        foreach (string file in Directory.GetFiles(from)){
            try {
                File.Copy(file, to + Path.GetFileName(file), true);
            } catch (Exception ex) {
                Debug.LogWarning ("拷贝失败:" + ex.Message);
            }
        }
    }
}

如果有问题,说明拷贝到的目标目录不对,打包后可以在此处查看到Gradle工程,拷贝后的目录结构是这样就没问题。

————————————————————————————————————

将项目从2021.1升级到2021.2的时候,收到一些错误,解决后打包Android包,之前没问题的突然报错了:

OBSOLETE - Providing Android resources in Assets/Plugins/Android/res is deprecated, please move your resources to an AAR or an Android Library. See "AAR plug-ins and Android Libraries" section of the Manual for more details.

原来2021.2已经不允许把res文件直接放Plugins/Android/目录下了,取而代之要用aar实现,这么坑,太不方便了。

这是官方写的链接:Unity - Manual: Upgrading to Unity 2021.2

但是aar这种方式太麻烦了,我们又不是专门的Android程序员,所以我就在探索有没有更快的解决方案。

这是我现在的目录结构:

  1.  直接把libs、res和AndroidManifest文件打成压缩包,改成.aar,同样报错。
  2. libs里的jar挪出来,jar、res、Manfiest文件打包成.aar,报错
  3. libs、AndroidManifest保留,res直接打包成res.aar,报错
  4. libs、AndroidManifest保留,res打包成.rar(打算骗Unity),报错

总结:

试了几种方式,都不行,看来还是只能补下aar的知识了,最后重新做了aar放unity成功了。

因为aar很多人不知道怎么操作,所以我特地写了个文章详细说下,请前往查看

AndroidStudio打包AAR供Unity使用流程_鱼蛋-Felix的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/egostudio/article/details/123456114
今日推荐