Xcode 6.3.2中的组织者 - 没有估计二进制文件大小

13
在之前的Xcode版本中,有一个地方可以估计您的应用程序的归档/二进制文件大小。在存档后的组织者中,您可以单击“估计文件大小”。但是,在6.3中,没有此按钮或功能!奇怪的是,在Xcode 6.2 beta版中,这个功能仍然存在。它是否隐藏在某个地方或者我漏掉了什么?如果他们废弃了这个功能,请给予建议。您可以在finder中查看文件或存档,但这与“估算大小”不同。
如果您想创建低于150MB的应用程序,则必须使用此功能。对于iOS用户来说,这对于保持我的应用程序低于150MB的蜂窝下载限制非常有帮助,从而增加了“冲动”购买的机会。在Android操作系统中,这要容易得多,因为您可以简单地查看APK的大小。
5个回答

4
IPA/App的大小并不能可靠地估计App Store中的最终大小。苹果公司会重新加密可执行文件,这通常意味着它不会像您上传提交包中的文件那样压缩得那么好。
一旦您获得了.app(*)文件,您需要在其上执行“显示包内容”,找到可执行文件并将其移出.app文件。将.app文件压缩为.zip文件(确保其中不再包含可执行文件),并记录该大小。将此数字加上可执行文件未压缩时的大小,再加上约100K,即可得到绝对最大的最终包大小:
TheorecticalMax = CompressedAppWithoutExec + UncompressedExec + 100K

实际上,您的可执行文件仍然可以获得不错的压缩比(如果您知道之前发布的AppStore大小,或者苹果在提交后告知了您,则可以计算出上次提交的压缩比)。例如,我们在Unity 5.0.1中构建了一个2D匹配三个标题的32位+64位可执行文件,获得了约82%的压缩比,因此在我们的情况下,数字如下所示:

提交的IPA大小:78.2MB

AppStore准备后苹果报告的大小:107.4MB(!)

经过一些严格的优化,我们将.ipa文件压缩到了:
IPA: 62MB
Uncompressed executable: 76.6MB (!!! THANKS UNITY !!!)
Compressed executable assuming similar 82% compression: 62.8MB
APP minus executable: 85.8MB
Compressed APP minus executable: 33.7MB

我们得到的最终估计为:
76.6*0.82 + 33.7 + 0.1 = 96.6MB

我们虽然提交的时间很紧,但几天前已经提交了,目前还没有收到苹果方面的任何通知告知我们的文件超过100MB(上一次提交后,在几小时内就会收到通知,可能是自动检查)。

(*) 从.xcarchive中获取.app文件,只需“显示包内容”,然后选择“Products->Applications”。从.ipa文件中,将其重命名为.zip文件,像解压任何.zip文件一样解压缩,然后在“Payload”文件夹中查找。


苹果加密的是可执行代码,而不是资源。加密数据是不可压缩的,没有模式,基本上是随机字节。 - zaph
这里还有一个不错的指南:http://www.indiepinion.com/steffenj/how-to-calculate-the-size-of-an-iphone-app-after-approval/ - d4Rk
@zaph - 是的,可执行文件的加密会隐藏模式,但你仍然可以得到一些信息,这并不意味着它是不可压缩的。这就是为什么有时人们会发现AppStore上的大小比他们提交的要大很多。对于Unity生成的可执行文件来说,即使在加密后仍然会存在一些模式,但是对于压缩算法来说可用的模式并不多。 - chadsmash
@chadsmash 不正确,加密数据与随机数据无法区分。随机数据没有模式。我拿了一个应用程序可执行文件,使用AES 128位、CBC和PKCS#7填充进行加密,并进行了压缩。以下是结果(clear表示未加密): clearAppData大小:7,338,096字节 cryptAppData大小:7,338,112字节(加密使文件增大了一个块的填充) clearAppFile zip大小:2,138,238字节 cryptAppFile zip大小:7,340,510字节。压缩使加密文件比压缩的未加密文件大2,398字节。如果您需要代码,我可以提供。 - zaph
是的,安装大小并不重要 - 只要在AppStore上下载的软件包大小小于100MB,就可以通过蜂窝网络进行下载。尽管您确实希望尽可能减少未打包/安装的大小,因为您不希望成为需要删除以释放空间的应用程序 :-) 112MB还不错。 - chadsmash
显示剩余3条评论

3
好的,我终于找到了一种可行的方法来获取一个大致的大小估计。当你完成后在finder中查看归档文件,然后打开包内容。在你的xcarchive文件下,有一个Products/Applications目录。在finder中打开你的xcarchive,然后显示包内容。

浏览到 -> Products -> Applications ->(产品名称),你可以查看文件大小。文件大小比预估的产品大小大约多5MB(我不确定这个原因)。


你的意思是浏览产品吗?通常包内容不包含“产品”文件夹。 - peko
在您的xcarchive文件下,有一个Products/Applications目录。 - apollosoftware.org
在Finder中打开您的xcarchive,然后显示包内容。您将看到该目录。 - apollosoftware.org
@peko 抱歉,但你错了。我的产品存档都有这个文件夹。很明显。 - apollosoftware.org
有趣的方法,而且非常简单。有人知道这是否与苹果的实际计算大小相关吗? - Praxiteles
有几兆字节的差异 +/-。 - apollosoftware.org

1

0
如果您想要最准确的苹果商店应用大小估算,可以解压缩应用的IPA文件,将可执行文件替换为一个相同大小的随机位文件(从而使其无法压缩),然后压缩生成的(不可执行的)IPA文件夹并检查生成的zip文件大小。

也想知道为什么会被踩而不是留言。最好的猜测是,SO上有相当数量的开发人员认为加密数据是可压缩的,或者不理解加密数据与随机数据无法区分。 - zaph

0
在组织者中,您需要像“保存用于Ad Hoc部署”一样导出存档。您可以使用“使用本地签名资产”。它将导出一个IPA文件。此文件的大小是App Store上存档的估计大小。

你是说这个会加密可执行文件,然后压缩ipa文件吗?如果是的话,你验证过了吗?测试过后发现可执行文件没有被压缩。所以这种方法行不通。如果你有不同意见,请提供反驳。 - zaph
它对我很有效。IPA是一个加密和压缩的文件。在之前的Xcode版本中,“估计大小”选项用于显示存档大小,而不是二进制大小。您可以在不打包到IPA的情况下浏览二进制大小。 - Evgeny Karpov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接