为什么当尝试安装Ad-Hoc构build时,出现“无法添加到iTunes库中,因为它不是一个有效的应用程序”错误?

我最近升级了我的Mac到Lion,还有Xcode 4。

在Build Settings中,我将“发布”的“代码签名”设置为与我们的Ad-Hocconfiguration文件(我们过去在Snow Leopard / Xcode 3上使用)匹配的“iPhone发行版”。

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

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

我正在build立产品>档案。

通过进入pipe理器并单击共享,保存文件,然后确保select了相同的Ad-Hocconfiguration。

我将所得到的IPA文件发送给我的老板,他们以前安装过这个程序。 当他试图安装它时,他得到消息“[appname]无法添加到你的iTunes库,因为它不是一个有效的应用程序”。

我一直在尝试所有我能想到的设置组合,但是我们无法完成这个工作。 我只能在Google上发现这个错误两次,一次是来自某个有越狱电话的人,另一次是在某篇文章的评论中发布的,有同样的问题,但没有回应。

任何帮助将非常感激。

编辑 :同样的事情发生,试图将IPA拖到创build它的Mac上的iTunes! 🙁

编辑2 :只是采取了另一个(几乎相同)的项目,并试图build设没有“现代化”的项目,或在Xcode中select任何新的选项(图标,启动图像,方向等),这种构build工程。 我将通过每个步骤来testing每个与原始应用程序一起做的事情。 希望应该能够隔离哪个步骤打破了编译的应用程序!

(也发布到苹果开发者论坛 )

我相信我已经追踪到了这一点……这似乎是间歇性地发生的,所以需要一段时间(我会重现它,回滚更改,确认它的工作,然后重新应用更改,然后再工作!)。

但是,经过多次清理/重启等之后,我相信它与目标设置中的“Build”版本有关(现在有两个版本字段“Version”和“Build”)。 看来,如果“Build”是空白的,那么就会发生这个错误。

不幸的是,改变这个值似乎没有正确的重build,所以有时如果你改变它,那么存档,你仍然会得到以前的值。 在归档之前手动清理似乎解决了这个问题。

该值作为CFBundleVersion写入到plist文件中。

最近我遇到了使用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. 

经过多次testing,我发现这个问题,问题是一样的,build立领域是空的(这个答案保存我的一天:-))

所以,如果其他人在TestFlight上有这个问题,我希望我的答案允许find这个页面更容易;-)

我也面临同样的问题。 做了一些研究后发现答案如下:

  • 应用程序VersionBuild version不应该空白。
  • 不要在我的应用程序包名称中input特殊字符。
  • 而且我的configuration文件也没有问题。

debugging发现在我的scheme名和info.plist文件名中有名称不匹配。 在我的项目中,我有3个scheme,如a,b,c和只有一个a-info.plist文件。 我正在为不同的scheme创buildIPA,如'b'。

在你的场景中,如果你创build了多个scheme,那么检查你的Info.plist名字。 这应该与您的计划名称相同(您正在创buildIPA)。

例。 计划名称是“myScheme”,然后将Info.plist文件名称命名为“myScheme-Info.plist”。

希望这会帮助你。

我得到了相同的信息(“不是一个有效的应用程序”)。 就我而言,我正在将构build的应用程序通过FTP传输到Web服务器,然后我就可以通过OTA进行configuration。 在放置文件之前,我并没有交换到二进制模式,所以.ipa文件在路上被破坏了。 大部分的晚上,我花了那个愚蠢的错误…

好吧..做一件事..打开info.plist ..去捆绑标识符和更改捆绑标识符名称。 它需要是唯一的..像“com.yourcompany.projectname”,并创build并尝试安装IPA ..它应该工作

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

我有一个专门的应用程序,开发团队中的每个人都可以安装,除了一个从iTunes得到错误的人:

X不是一个有效的应用程序

他已经能够安装这个应用程序的早期版本。 重build应用程序,更改版本号和更改内部版本号没有任何影响,他仍然无法安装,但其他人可以。

我通过创build一个全新的Xcode项目来修复它,无论是复制文件,还是从旧项目复制粘贴文件的内容到新项目,然后重build应用程序并以与旧项目完全相同的方式进行签名。 有效。

在尝试为旧项目(一年前由前开发人员构build)之一创buildadHoc分发的.ipa时,我遇到了类似的问题。 经过在谷歌大量的研究和遵循上述解决scheme,它并没有解决我的某些原因。

稍后继这个链接 – 在这里 。 通过用现有的工作项目(显然 – 相关的图标/软件包显示名称/标识符)replace.plist文件并用当前.plist名称重命名。 它为我工作。

我从字面上花了大约3-4个小时来解决这个问题。 希望它有助于一个人。

环境是本机的 – iOS应用程序。

在你的info.plist中添加……“应用程序需要iPhone环境”,或者如果添加,则给它赋值“YES”。 检查“生成”和“版本”一般不是空的….希望这将工作

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

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

确认configuration文件和其他一切都很好,debugging构build正常工作,我注意到一般的共识是围绕info.plist文件的问题。

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

 Application requires iPhone environment = NO 

基本上这个关键需要永远被设置为YES的iOS应用程序,无论是iPhone,iTouch或iPad …

它可能并不限于每个人的密钥,但要确保info.plist与正在运行的应用程序类似。

 Bundle version Bundle versions string, short 

应该永远在场!

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