为什么在尝试安装Ad-Hoc构建时,“无法将其添加到您的itunes库,因为它不是有效的应用程序”错误?

时间:2011-09-27 14:16:06

标签: iphone ios xcode xcode4

我最近将Mac升级为Lion,以及Xcode 4。

在构建设置中,我将“发布”的“代码签名”设置为“iPhone发行版”,它与我们的Ad-Hoc配置文件(我们过去使用的Snow Leopard / Xcode 3)相匹配

我删除了旧的Entitlements文件(因为它显然不再被Xcode 4使用)。

在Scheme部分中,我将Archive设置为使用Release版本。

我正在使用Product>档案

我通过进入管理器并单击“共享”来保存文件,然后确保选择了相同的Ad-Hoc配置。

我将生成的IPA文件发送给我以前安装过此应用的老板。当他尝试安装它时,他收到消息“[appname]无法添加到您的itunes库,因为它不是有效的应用程序”。

我一直在尝试我能想到的各种设置组合,但我们无法让它发挥作用。我只能在Google中发现此错误两次 - 一次是来自越狱手机的人,一次是发表在一篇文章的评论中,有人有同样的问题,但没有回复。

任何帮助都会非常感激。

编辑:尝试将IPA拖到创建它的Mac上的iTunes中也是如此! :(

Edit2 :刚刚接受了另一个(几乎相同的)项目并尝试了没有“现代化”项目的构建,或选择了Xcode中的任何新选项(图标,启动图像,方向等) ,这个构建工作。我将使用这个用原始应用程序完成的每一项工作,每一步都要进行测试。希望应该能够确定哪个步骤打破了已编译的应用程序!

(也张贴到Apple Dev Forums

11 个答案:

答案 0 :(得分:19)

我相信我已经跟踪了这个...它似乎是间歇性的发生,所以花了一些时间(我重现它,回滚变化,确认它有效,然后重新应用变化,然后它再次工作!)。

但是,经过多次清理/重启/等等,我认为它与目标设置中的“Build”版本有关(现在有两个版本字段,“Version”和“Build”)。似乎如果“Build”为空,则会发生此错误。

不幸的是,更改此值似乎无法正确重建,因此有时如果您更改它,然后存档,您仍然可以获得之前的值。在Archiving之前手动清理似乎可以解决这个问题。

该值将作为CFBundleVersion写入plist文件。

答案 1 :(得分:2)

最近我使用TestFlight服务进行Ad-Hoc安装时出现问题,日志中的消息没有太多帮助:

Jul 25 12:52:39 MyiPad installd[477] <Error>: 0x10059c000 init_pack_state: Archive we've been requested to install is 0 bytes. That can't be a valid ipa.

经过多次测试后,我发现了这个问题并且问题是一样的,Build字段是空的(这个答案保存了我的一天:-))

所以,如果其他人在TestFlight上遇到这个问题,我希望我的答案能让我们更容易找到这个页面; - )

答案 2 :(得分:2)

我也面临同样的问题。经过一些研究后发现以下答案为:

  • 应用VersionBuild version不应为空。
  • 请勿在我的应用包名称中添加特殊字符。
  • 我的配置文件也没有问题。

调试后发现我的方案名称和info.plist文件名中存在名称不匹配。在我的项目中,我有3个方案,如a,b,c和只有一个a-info.plist文件。我正在为'b'这样的不同方案创建IPA。

在您的方案中,如果您已创建多个方案,请检查您的Info.plist名称。这应该与您的方案名称(您为其创建IPA)相同。

实施例。方案名称为'myScheme',然后您的Info.plist文件名为'myScheme-Info.plist'。

希望这会对你有所帮助。

答案 3 :(得分:1)

我收到了相同的消息(“不是有效的应用”)。在我的情况下,我将构建的应用程序FTP到Web服务器,然后我就可以OTA配置它。在我放置文件之前,我没有交换到二进制模式,因此.ipa文件在途中被破坏了。晚上大部分时间都把我弄清楚这个愚蠢的错误......

答案 4 :(得分:0)

确定..做一件事..打开info.plist ..转到包标识符并更改包标识符名称。它需要是唯一的..像“com.yourcompany.projectname”之类的东西,并创建并尝试安装ipa ..它应该工作

答案 5 :(得分:0)

我在研究类似问题时遇到了这个问题,所以即使案例不相同,我也会在这里回答,因为其他人会搜索相同的错误信息。

我有一个特别的应用程序,开发团队中的每个人都可以安装得很好,除了一个从iTunes获得错误的人:

  

X不是有效的应用

他已经能够安装此应用程序的早期版本。重建应用程序,更改版本号和更改版本号无效,他仍然无法安装,但其他人可以。

我通过创建一个全新的Xcode项目来修复它,要么复制文件,要么将文件内容从旧项目复制并粘贴到新项目中,然后重建应用程序并以与完全相同的方式对其进行签名。旧项目。它奏效了。

答案 6 :(得分:0)

我在尝试为旧项目之一(由前开发人员在一年前建立)为adHoc分发创建.ipa时遇到了类似的问题。经过谷歌的大量研究并遵循上述解决方案后,这对我来说并没有成功。

在关注此链接之后 - here。通过将.plist文件替换为现有的工作项目(显然 - 相关的图标/包显示名称/标识符)并使用当前的.plist名称重命名。它对我有用。

我花了大约3-4个小时来解决这个问题。希望它有所帮助。

环境是原生的 - iOS应用程序。

答案 7 :(得分:0)

......添加  您的info.plist中的“应用程序需要iPhone环境”,或者如果添加,则为其设置值“YES”。 检查“Build”和“Version”一般不是空的.... 希望这会起作用

答案 8 :(得分:0)

将项目内容导入新项目为我解决了这个问题。

答案 9 :(得分:0)

对我来说,我们试图从iOS 5开始构建一个非常古老的应用程序。

确认配置文件后,其他一切都很好,调试版本正常工作,我注意到普遍的共识是围绕info.plist文件的问题。

我将info.plist与另一个应用程序进行了比较,当然,

Application requires iPhone environment = NO

对于iOS应用程序,基本上需要将此密钥设置为 YES ,无论是iPhone,iTouch还是iPad ......

它可能不仅限于每个人的密钥,但要确保info.plist看起来与工作应用程序类似。

Bundle version
Bundle versions string, short

应该永远存在!

答案 10 :(得分:-1)

正确..但我猜它与早期的捆绑标识符发生冲突(这是因为你升级了Xcode)。您是否尝试更改现有的捆绑包标识符名称并进行安装?我有相同的问题,浪费了3-4天..我改变了现有的捆绑包标识符名称,它工作..你也可以检查捆绑名称和捆绑版本存在于info.plist