Version: 2020.3
Android 开发故障排除
报告 Android 下的崩溃错误

Gradle 故障排除

如果刚从旧系统切换到 Gradle 并从新系统导出 Android 项目,可能会遇到构建错误,尤其是在使用其他 Android 库或者添加了自定义 AndroidManifest.xml 的情况下。

Android Gradle 插件远比旧的 ADT/Ant 系统更挑剔。它不接受 任何它认为有错的内容,无论是重复的符号、对不存在资源的引用 还是与主应用程序设置相同属性的库项目。

在大多数情况下,修复此类问题涉及编辑 AndroidManifest.xml 文件;要么是主文件, 要么是项目使用的库中的文件。

在不寻常的项目中,或者如果项目有下方故障排除部分未描述的问题, 请将项目导出为 Gradle 项目(通过 __Build Settings__)并从命令行进行构建。从命令行进行构建可提供更详细的错误消息,并在应用更改时提供更短的周转时间。

特定问题

找不到资源

一个 AndroidManifest.xml 文件(主文件或库中的文件)引用不存在的 资源。通常,该资源是由库设置的应用程序图标或标签字符串。如果 已将主清单复制到库项目但未删除这些引用,则会发生这种情况。

从其中一个 Android 清单(通常是库中的清单)中删除该属性。

清单中的 MinSDK

AndroidManifest.xml 文件中将指定 android:minSdkVersion 属性。该属性可以在主清单文件中,也可以在被 Unity 视为 Android 库的目录之一中的文件中。.aar 插件应该不会造成此问题。

解决方案是从主清单中和/或库目录中的清单中删除 uses-sdk android:minSdkVersion 元素。然后,应该在 build.gradle 文件中指定最低 SDK 版本来取代该元素。如果没有自定义的 Gradle 模板,则 Unity 将自动处理此情况。如果有自定义的 Gradle 模板,请确保在该模板的 defaultConfig 部分中指定了 minSDK。

APK 中出现重复文件

主应用程序和库项目之间或两个库项目之间存在 文件名冲突。请注意,所有文件都会复制到同一 APK 包中。

需要删除其中一个文件。

包名称冲突

库不能使用与主应用程序或任何其他库相同的 Java 包。

通常,应将库的包名称更改为其他不同的名称。如果库 包含大量代码,可能更容易更改主包名称(通过 Player 设置)。

属性冲突

库无法自由覆盖主 AndroidManifest.xml 文件中的属性。通常,此错误是由设置应用程序图标或标签字符串的库引起的,类似于上面的__找不到资源__问题。

从库中删除属性,或者将 tools:replace 属性添加到 application 标签以指示应如何解决合并冲突。

Android 开发故障排除
报告 Android 下的崩溃错误