如何在Unity3D中为Android启用multi-dex选项?

Igo*_*nko 10 android unity-game-engine

在使用Unity构建时,我收到一个错误:

trouble writing output: Too many method references: 78849; max is 65536.
You may try using --multi-dex option.
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何明确地告诉Unity使用multi dex.

Ano*_*mys 9

要在Unity上激活multidex,请遵循3个简单步骤:

在此处输入图片说明

1)使用Gradle构建系统:

Unity -> File -> Build Settings -> Build System -> Gradle.
Run Code Online (Sandbox Code Playgroud)

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

Player Setting... -> Publish Settings -> Check in "?ustom Gradle Template"
Run Code Online (Sandbox Code Playgroud)

3)更改mainTemplate.gradle文件:

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

添加以下代码:

android 
{
   ...
   defaultConfig
   {
       multiDexEnabled true
       ...
    }
}
Run Code Online (Sandbox Code Playgroud)

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

  • 这应该是公认的解决方案。它在最新版本的 Unity 中运行良好,其中 gradle build 是默认选项。 (2认同)

Kon*_*nov 8

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

Android上的Multidex支持

而Q/A来自那里:当我导出android build时,有太多的方法引用

以下是Unity官方的回复:

因此,我们没有在Unity中添加对此的支持的最大原因是因为它不起作用.或者更确切地说,它通常会产生比解决更多的问题.除非你只针对Android的现代版本,否则我建议你尽一切力量,包括在采用多索引路线之前剥离和编程代码.

如果你不相信我,只需在Googles开发者页面上查看multi-dex库的已知限制:https: //developer.android.com/tools/building/multidex.html#limitations

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

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

另外,我主张阅读有关DEX问题的这篇文章.

我希望,这有帮助.祝好运!