那么我应该怎么做才能减少引用计数?
你有这么多具有许多功能/领域的插件。从 Unity 的编辑器构建它时有一个限制,您已经达到了这个限制。
要减少引用计数,您必须删除其中一些插件,但我确信您需要它们并且在这种情况下删除可能不是合适的解决方案。
目前真正解决这个问题并为 Android 构建的唯一方法是export 将项目作为 Android 项目,然后使用 Android Studio 构建它。这消除了 Unity 编辑器施加的参考限制。
编辑
我忘了提到你必须在导出后启用 multidex。由于每天都有很多人遇到这个问题,我决定添加一个详尽的说明,说明如何通过将其导出来解决此问题,以及如何在不导出它的情况下解决它。
通过导出项目来修复
1A。将 Unity 项目导出为 Android 项目。
1B.导入 Android Studio:
如果您在导入 Android Studio 时遇到如下所示的成绩错误:
错误:org.gradle.api.internal.tasks.DefaultTaskInputs$TaskInputUnionFileCollection
不能转换为
org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection
在 build.gradle 文件的 "buildscript" 块中的 "dependencies" 块中,更改:
classpath 'com.android.tools.build.gradle.2.1.0'
到
classpath 'com.android.tools.build:gradle:2.2.3'
如果导出项目后仍然报同样的错误,则需要手动启用multidex。以下是 Google 的 doc 的简化步骤,将在错误中显示给您:
2.将android:name="android.support.multidex.MultiDexApplication" >添加到
AndroidManifest.xml 文件中的 application 标记。
3。将compile 'com.android.support:multidex:1.0.1' 添加到build.gradle 文件中的“dependencies” 块中。
4.将multiDexEnabled true添加到build.gradle文件中“android”块中的“defaultConfig”块.
构建 APK 并查看它是否有效。如果引用计数错误消失了,请在此处停止。
5.获得如下所示的 GC 开销异常?
java.lang.OutOfMemoryError: 超出 GC 开销限制
增加执行 dex 操作时将使用的堆大小。从此solution 中,将以下内容添加到 build.gradle 文件中的“android”块中:
dexOptions {
javaMaxHeapSize "4g"
}
在不导出项目的情况下进行修复
必须具有 Unity 5.5 及更高版本才能执行此操作:
1.转到<UnityInstallationDirecory>\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates,将mainTemplate.gradle 文件复制到您的<ProjectName>Assets\Plugins\Android 文件夹中。
2.转到<UnityInstallationDirecory>\Editor\Data\PlaybackEngines\AndroidPlayer\Apk,将AndroidManifest.xml文件复制到您的<ProjectName>Assets\Plugins\Android
3。打开您刚刚使用 Visual Studio 复制的 mainTemplate.gradle 和 AndroidManifest.xml 文件,然后按照上面的FIX BY EXPORTING THE PROJECT指令进行修改。跳过/忽略步骤 #1A 和 #1B。只需执行从 #2 到 #5 的步骤。而已。
This 是最终 mainTemplate.gradle 的样子,this 是最终 AndroidManifest.xml 的样子。这仅供参考。我建议你不要使用我的,而是按照上面的复制步骤来创建你的,因为未来的 Unity 版本可能带有不同的文件。你要确保你使用的是最新的,否则你可能会在构建它时遇到问题。
4.构建 APK 并查看它是否有效:
--
如果引用计数错误消失了,就停在这里:
5.遇到如下错误?
使用 Gradle 时必须对构建失败发布版本进行签名
只需 sign 来自 Build Settings 中的Publishing Settings 的 apk。您可以创建新的密钥库或使用现有的。
6.另一个类似下面的错误?
错误:避免硬编码调试模式;忽略它允许调试
并发布构建以自动分配一个 [HardcodedDebugMode]
从AndroidManifest.xml 文件中删除android:debuggable="true">。
如果此非导出解决方案不适合您,那么您必须
使用导出解决方案。