【问题标题】:App file size differences in Android and iOSAndroid 和 iOS 中的应用程序文件大小差异
【发布时间】:2012-01-11 09:39:51
【问题描述】:

使用这两种应用分发服务(android 市场和 Apple App Store)我发现了一个谜。

Apple 应用程序的文件大小通常比 Android 应用程序大。 对于这些差异,我似乎找不到任何解释,而且这似乎是一个未触及的主题。

我已尝试分配不同的应用程序,差异似乎在几 MB 到 6-8 MB 之间。那么问题来了,Apple 应用程序的文件大小怎么会变大呢?多余的 MB 有什么用?

例子:

英国广播公司:

安卓:918K - https://market.android.com/details?id=bbc.mobile.news.ww

苹果:6.7 MB - http://itunes.apple.com/dk/app/bbc-news/id364147881?mt=8

由于某些垃圾邮件防护措施,我无法直接链接到其余部分。

英国航空公司

Android:1.2 MB

苹果:7.9 MB

北方银行

Android:2.1 MB

苹果:6.4 MB

美国银行

安卓:727K

苹果:2.1 MB

我可以继续...如果有人可以提供两个应用程序分发的文件大小统计数据,证实或反驳我的理论。 - 我将不胜感激。

【问题讨论】:

  • 在研究这个问题时,我发现即使是所有支持的分辨率中更基本的图形(按钮、面板等),也被放置在我有机会检查的 Apple 应用程序中。如果这是 Apple 应用程序开发的正常程序,那么这可能会占一些额外的 MB。这对于 Apple 应用程序是否正常?

标签: android ios app-store google-play


【解决方案1】:

在我看来,Apple 开发人员正在使用更多全屏尺寸图像(低分辨率和 Retina),并且比 Android 更多的图像,并且 iPhone 的 UI 定义文件 (.XIB) 比使用的 XML 文件大得多安卓。包装中的压缩也应该有所不同(.APK)压缩得如此之大!最后可能在包含框架方面有所不同,但在这一点上我不知道:)

【讨论】:

  • 是不是 iOS 应用更静态地链接到库,而 android 库不包含在包中?
  • 你说.apk文件是我压缩的,暗示苹果没有?
  • 我猜是这样,我不认为苹果会在他们的商店里放无压缩的应用程序,尤其是在数十亿次下载之后。对于图书馆,我不知道;但听起来还是很奇怪,为什么 Apple 会在他们的包中包含库
【解决方案2】:

对于 iPhone 中的通用应用,我们需要放置三种尺寸的图片 -

一个用于 320x480 像素
第二个为 640x940 像素(视网膜)
第三为 768x1024 (iPad)

在开发 android 应用程序时,我们需要放置三种图像 -

hdpi(高)
mdpi(中)
ldpi(低)

在 android 中还有一件事,没有强制规定放置所有三种图像。基本上这取决于您制作应用程序的目标,仅适用于我们需要放置图像的分辨率。

【讨论】:

    【解决方案3】:

    iOS 应用程序中的二进制可执行文件是加密的,因此压缩效果很差或根本不压缩。 iOS 应用程序中的二进制可执行文件是使用一些静态链接的库代码编译的,这通常可以使其大于类似内容的解释 Dalvik 字节码。 iPhone 应用程序往往包含更多高质量的图形内容和适用于多种屏幕分辨率的艺术作品,包括相对较大的 iPad 显示屏。

    【讨论】:

    • 这是有道理的。 Android 使用特殊的文件夹结构支持不同的分辨率。这使得 Android 能够为不同的分辨率自动选择最佳图形。 - 这不是一个广泛使用的解决方案吗?
    【解决方案4】:

    我刚刚花了最后一天左右的时间试图找出这个确切的问题。我已经为 Android 构建了一个名为 BlockIT 的小游戏,现在我有一个适用于 iOS 的运行版本。奇葩的是安卓版是8.2MB,iOS版是14.1MB。

    现在,由于我是源的所有者,我想追查此事并找出原因。正如许多人在这里建议的那样,它是图形元素 - 事实并非如此。每个包中的整个数据集(非代码)几乎相同。这是有道理的,因为我在每个应用程序中使用相同的图形。

    那么,为什么代码构建如此不同!我的 iOS 代码构建接近 7 MB,而 Android 代码不到 3 MB。代码本身被编写为以相同的方式运行,除了一小部分代码之外,所有平台在每个平台上都完全相同。我发现构建(iOS gcc)设置对您获得的输出大小有很大影响。如果您只设置目标 ARM6 或 ARM7,那么我的代码二进制文件的大小会从 7 MB 下降到 5 MB。这表明在一个二进制文件中,每个目标的函数和库几乎完全重复!此外,内置的调试符号似乎并没有被完全剥离。最后,代码的加密也需要大量的费用。这可能是最令人费解的,因为 Android 以类似的方式签署他们的 apk。看来iOS签名做的很奇怪。

    所以,我希望这会有所帮助。重申:
    - 图像/数据似乎不是问题
    - 在 iOS 上构建的代码在一个二进制文件中生成多个平台输出 == 大量额外代码(顺便说一句,我不明白 Apple 这样做的原因 - 看起来很奇怪)。
    - 代码加密在 iOS 上对大小不是很友好。

    没有真正的方法可以解决实际问题(再次,奇怪和令人失望)。

    【讨论】:

    • 为您澄清一下为什么它会为不同的 ARM 版本产生多个输出:这是因为不同的处理器世代支持处理器直接提供的附加功能以加快代码执行速度。但是由于这些只能在正确的体系结构上执行,因此当设备不支持某些指令时,您还需要代码。那么苹果为什么要这么做呢?以提高功能设备的性能,以换取一些相当不相关的文件大小差异。
    • 是的,我知道要满足不同的目标平台,但这很奇怪,因为它们不是在 API 或一些合理的架构中解决它,而是包含两个完整的库副本(这就是为什么它们大约是 2 倍) .因此。奇怪的。 :)
    猜你喜欢
    • 1970-01-01
    • 2012-08-31
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    相关资源
    最近更新 更多