我的项目使用这些插件:
几乎每个项目都使用这些插件。
但是我超过了现场引用次数
我应该怎样做才能减少引用次数?
答案 0 :(得分:30)
那么我应该怎样做才能减少参考次数?
你有很多具有许多功能/字段的插件。从Unity的编辑器中构建它时有一个限制,你已经达到了这个限制。
要减少引用次数,您必须删除一些这些插件,但我确定您需要它们,并且在这种情况下删除可能不是合适的解决方案。
唯一实现这一目标并为Android构建的方法是 export Project as Android Project然后使用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 文件中的应用程序标记。
3 。将compile 'com.android.support:multidex:1.0.1'
添加到 build.gradle 文件中的“依赖项”块。
4 。将multiDexEnabled true
添加到 build.gradle “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版本。您可以创建新密钥库或使用现有密钥库。
6 。另有错误,如下所示?
错误:避免硬编码调试模式;离开它允许调试 并释放构建以自动分配一个[HardcodedDebugMode]
从android:debuggable="true">
文件中删除AndroidManifest.xml
。
如果此非导出解决方案不适合您,那么您必须这样做 使用导出解决方案。
答案 1 :(得分:5)
IMO,接受的答案不正确(或仅部分正确)。导出Android工作室不会“神奇地”修复此问题。此外,根据我的经验,导出的Android工作室项目并不总是立即构建,您必须先修复很多东西才能实际构建它。
您使用了大量插件,因此您遇到Android limitation无法引用64k以上的方法。
您可以尝试解决此问题: