如果刚从旧系统切换到 Gradle 并从新系统导出 Android 项目,可能会遇到构建错误,尤其是在使用其他 Android 库或者添加了自定义 AndroidManifest.xml 的情况下。
Android Gradle 插件远比旧的 ADT/Ant 系统更挑剔。它不接受 任何它认为有错的内容,无论是重复的符号、对不存在资源的引用 还是与主应用程序设置相同属性的库项目。
在大多数情况下,修复此类问题涉及编辑 AndroidManifest.xml 文件;要么是主文件, 要么是项目使用的库中的文件。
在不寻常的项目中,或者如果项目有下方故障排除部分未描述的问题, 请将项目导出为 Gradle 项目(通过 __Build Settings__)并从命令行进行构建。从命令行进行构建可提供更详细的错误消息,并在应用更改时提供更短的周转时间。
一个 AndroidManifest.xml 文件(主文件或库中的文件)引用不存在的 资源。通常,该资源是由库设置的应用程序图标或标签字符串。如果 已将主清单复制到库项目但未删除这些引用,则会发生这种情况。
从其中一个 Android 清单(通常是库中的清单)中删除该属性。
AndroidManifest.xml
文件中将指定 android:minSdkVersion
属性。该属性可以在主清单文件中,也可以在被 Unity 视为 Android 库的目录之一中的文件中。.aar 插件应该不会造成此问题。
解决方案是从主清单中和/或库目录中的清单中删除 uses-sdk android:minSdkVersion
元素。然后,应该在 build.gradle
文件中指定最低 SDK 版本来取代该元素。如果没有自定义的 Gradle 模板,则 Unity 将自动处理此情况。如果有自定义的 Gradle 模板,请确保在该模板的 defaultConfig
部分中指定了 minSDK。
主应用程序和库项目之间或两个库项目之间存在 文件名冲突。请注意,所有文件都会复制到同一 APK 包中。
需要删除其中一个文件。
库不能使用与主应用程序或任何其他库相同的 Java 包。
通常,应将库的包名称更改为其他不同的名称。如果库 包含大量代码,可能更容易更改主包名称(通过 Player 设置)。
库无法自由覆盖主 AndroidManifest.xml
文件中的属性。通常,此错误是由设置应用程序图标或标签字符串的库引起的,类似于上面的__找不到资源__问题。
从库中删除属性,或者将 tools:replace 属性添加到 application 标签以指示应如何解决合并冲突。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.