【问题标题】:How to enable multi-dex option for Android in Unity3D?如何在 Unity3D 中为 Android 启用 multi-dex 选项?
【发布时间】:2015-06-30 14:34:22
【问题描述】:

在使用 Unity 构建时,出现错误:

trouble writing output: Too many method references: 78849; max is 65536.
You may try using --multi-dex option.

但我不知道如何明确告诉 Unity 使用 multi dex。

【问题讨论】:

  • 是统一的,就像android的插件或android的单独版本
  • 我想你可以导出android项目并手动启用它。

标签: android unity3d


【解决方案1】:

要在 Unity 上激活 multidex,只需 3 个简单的步骤:

1) 使用 Gradle 构建系统:

Unity -> File -> Build Settings -> Build System -> Gradle.

2) 签入“Сustom Gradle 模板”:

Player Setting... -> Publish Settings -> Check in "Сustom Gradle Template"

3) 更改 mainTemplate.gradle 文件:

从路径打开文件:Assets\Plugins\Android\mainTemplate.gradle

添加以下代码:

android 
{
   ...
   defaultConfig
   {
       multiDexEnabled true
       ...
    }
}

附加信息: https://docs.unity3d.com/Manual/android-gradle-overview.html

【讨论】:

  • 这应该是公认的解决方案。它在最新版本的 Unity 中运行良好,其中 gradle build 是默认选项。
  • 简单,工作起来就像一个魅力。我正在尝试其他没有任何效果的解决方案(例如来自 developer.android),最终成功了。
【解决方案2】:

我建议查看官方 Unity3D 论坛关于这个问题:

Multidex Support on Android

还有来自那里的问答:Too many method references when I export android build

Unity官方回复如下:

所以我们没有在 Unity 中添加对此的支持的最大原因是它不起作用。或者更确切地说,它通常会产生比它解决的问题更多的问题。除非您只针对现代版本的 Android,否则我建议您在采用 multi-dex 之前尽其所能,包括剥离和保护您的代码。

如果您不相信我,请在 Google 开发者页面查看多 dex 库的已知限制: https://developer.android.com/tools/building/multidex.html#limitations

所以结论是尽最大努力减少方法的数量以保持在 65K 的限制内。例如,如果您使用 google-play-services.jar,则可以仅将其替换为所需的子模块。

还有关于导出到 Android Studio 并在那里构建项目的讨论,但显然,由于 dex 问题,它没有成功。

另外,我建议阅读 this 关于 DEX 问题的文章。

我希望,它会有所帮助。祝你好运!

【讨论】:

    猜你喜欢
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-20
    • 2018-06-10
    • 1970-01-01
    • 2018-01-16
    相关资源
    最近更新 更多