/ 开发笔记

#Unity# iOS打包上传时报错 The bundle uses a bundle name or display name that is already taken

问题背景

最近在做一个相机类App,在正式上传之前,我们已经创建好bundle id,并把想好的名字提交到了苹果网站的itune connect。

但是,打包上传的时候,却报了这么个错误:

The bundle uses a bundle name or display name that is already taken

打包上传时报错 The bundle uses a bundle name or display name that is already taken

原因

为什么使用了一个已经创建好的App名字,依然会报错呢?

StackOverFlow上有个小哥也遇到了这个问题:
Error while validate or upload on App Store “The bundle uses a bundle name or display name that is already taken”

Error while validate or upload on App Store “The bundle uses a bundle name or display name that is already taken”

这个小哥提到一个关键点:

Actually IOS project generate by Unity OSX Mac Editor

他的XCode工程是用Unity生成的。

小哥在评论里提到了另外一个关键点:
Existing app threw error while validate or upload on App Store “The bundle uses a bundle name or display name that is already taken”

为了占住这个名字,他甚至已经提交过一个空白的工程。

那么,还有什么可能呢?

看完这个小哥的悲惨遭遇,我又回到了google的搜索结果,发现简书上也有人提到这个问题:
The bundle uses a bundle name or display name that is already taken

打开一看,发现他的遭遇跟我的不一样,他因为

使用了与之前上传的App的名字不一样的名字。

使用与之前上传的App不一样的名字

但是,在评论里,有人提到了另一个方向:
使用苹果内部App的名字会报错

排查发现有一个地方写的 Wallet,是与系统的App重复,但不是 bundle id

于是,我赶紧回去看了一眼我的App:
Unity自动将bundle id的最后一位作为product name

原来Unity生成XCode工程时,自动使用bundle id的最后一段(比如这个例子中的com.xmanyou.camera中的camera) 作为product name

product name与系统App冲突

XCode工程默认是使用产品名Product Name作为包名Bundle Name的:
XCode默认使用Product Name作为Bundle Name

显然,Camera是系统App的名字的可能性非常大。

解决方法

在XCode工程的 Build Settings 中修改可能与系统App冲突的Product Name。

注意,改完Product Name以后,记得检查你的Bundle Id是否被修改了,这个要与你要与你在iTunes Connect网站上建的一致。

参考

  1. https://stackoverflow.com/questions/24813726/invalid-binary-error-the-bundle-uses-a-bundle-name-or-display-name-associated-w
  2. https://stackoverflow.com/questions/46447268/error-while-validate-or-upload-on-app-store-the-bundle-uses-a-bundle-name-or-di?noredirect=1&lq=1
  3. https://www.jianshu.com/p/621e98b05244