已填写Bundle Identifier仍触发UnityException,非规范格式为何报错?
为什么我的非com开头Bundle Identifier仍触发Unity报错?
嘿,别着急,咱们先搞清楚关键一点:Unity报错里提到的com.YourCompanyName.YourProductName只是示例格式,不是强制要求必须以com开头!你触发这个错误,肯定是你的Bundle Identifier违反了Unity对它的底层命名规则,而非格式不符合示例。
下面是最常见的几种违规情况,你可以对照检查:
- 某段以数字或下划线开头:每个用点
.分隔的部分(比如com、YourCompanyName都是段),必须以英文字母开头,不能是数字或下划线。比如123.MyGame、_mycompany.GameDemo这种都会触发错误。 - 包含非法字符:Bundle Identifier只能用英文字母(大小写都可)、数字、下划线
_和点.,空格、连字符-、中文或者其他特殊字符(比如!@#)都不允许。 - 存在空段:如果出现连续的点(比如
com..MyGame),或者首尾带点(比如.MyGame、MyGame.),都会导致某个段为空,这也是不被允许的。 - 设置未完全生效:有时候你修改了Player Settings里的Bundle Identifier,但没点击编辑器右上角的
Apply按钮,或者编辑器缓存没刷新,也会出现这种报错。可以试试重启Unity,或者手动点击Apply确认设置生效。
如果你想快速验证自己的Bundle Identifier是否合规,可以对照这个正则表达式:
^[A-Za-z][A-Za-z0-9_]*(\.[A-Za-z][A-Za-z0-9_]*)*$
只要你的标识符符合这个规则,不管是不是com开头,都能通过Unity的校验~
内容的提问来源于stack exchange,提问作者Yuki




