我最近将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)
答案 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)
我也面临同样的问题。经过一些研究后发现以下答案为:
Version
和Build 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