【问题标题】:Xamarin iOS App Size 60% Increase Since Last Build With Same Code自上次使用相同代码构建以来,Xamarin iOS 应用程序大小增加了 60%
【发布时间】:2017-05-04 12:04:56
【问题描述】:

我有一个 Xamarin Forms 应用程序,该应用程序目前在我于 2016 年 10 月构建并提交的 App Store 上(我认为当时是最新版本的 Xamarin Studio 和 Xamarin.iOS)。该应用在 App Store 上的大小为 50 mb。

对应用程序进行了一些更新后,我现在构建它(AppStore 配置,然后是存档),大小为 82 mb。对这个气球的大小感到困惑,我切换回了 App Store 中当前版本的 git 标签。我可以为 2016 年 10 月的版本构建完全相同的标签/版本/代码,它的 App Store 大小现在是 80 mb。

我正在使用最新的 Xamarin Studio (6.3 build 863)、Xamarin.iOS (10.8.0.175) 等。

为什么规模增长了 60%?没有更改任何应用程序代码或库,只有较新版本的 Xamarin Studio 和 Xamarin.iOS。我如何弄清楚这里发生了什么?我可以在我的设备上进行 Add-Hoc 构建,发现它只占用约 55 mb,与我在 App Store 中看到的非常接近。

另外,请注意,我不是在比较 .ipa 的大小。在归档构建后,我正在比较 Xamarin Studio 中归档屏幕中显示的“估计的 App Store 大小”。在通过应用程序加载器将签名的构建提交到 iTunes Connect 并从 iTunes Connect > Activity > All Builds > App Store File Sizes 进行验证后,反映了相同的大小差异。

2017 年 9 月 5 日更新

不确定发生了什么变化,但现在使用最新版本的 Xamarin iOS,版本:10.12.0.20(刚刚更新),我的应用程序大小现在回落到 60mb 范围内...没有任何其他变化。

【问题讨论】:

  • 可以检查是否有任何图像资产设置为内容而不是捆绑资源,在我的一些应用程序中,这导致应用程序大小膨胀。
  • @Digitalsa1nt 我刚刚验证了所有资产都是捆绑资源(两个 iTunes 艺术作品除外)。

标签: xamarin xamarin.ios xamarin.forms


【解决方案1】:

我的猜测是 xamarin 正在打包很多不需要的东西,可能是您不再使用的旧图像或类似的东西。我亲身经历过。

转到您的项目文件夹并删除 obj 文件夹中的所有内容

<myproject>/iOS/obj/

通常您会在其中看到两个文件夹:iPhone 和 iPhoneSimulator。

删除这些并重新构建所有内容,很有可能会解决它

【讨论】:

  • 虽然过去就是这样,但这并不能解决我目前遇到的问题。
【解决方案2】:

我可以在我的设备上进行 Add-Hoc 构建,发现它只占用了 ~55 mb,

您的配置之间可能有一些不同的选项,例如

  • 托管链接器设置,例如不链接链接 SDK
  • 目标架构,例如armv7+arm64armv7+armv7s+arm64;

我如何弄清楚这里发生了什么?

比较您的构建日志,特别是提供给mtouch 工具的选项。这通常会很快查明差异。

我正在比较“估计的 App Store 大小”

始终比较 IPA(文件)大小。众所周知,猜测最终大小的算法经常(非常)错误。估计也来自 Apple 的工具,因此它们会随着您使用的 Xcode 版本而变化(这不太可能与您去年秋天使用的相同)。

旁注:当启用位码时,最终大小甚至更难猜测(目前仅适用于 tvOS 和 watchOS 版本)。

【讨论】:

  • 如果所有构建设置都相同,我是否应该期望我设备上安装的 Ah-Hoc 构建与我从 App Store 下载的大小相同? ipa 这里的大小只有 20mb 左右,但我的理解是,一旦被苹果签名用于 AppStore 分发,它就会大得多。
  • 如果你想测量应用程序的大小,这里是文档,需要考虑哪些文件:developer.apple.com/library/content/qa/qa1795/_index.html 我会看看 .ipa文件,而是在您的案例中查看精简的应用程序包。
  • 如果您想测量应用程序的大小, -> 是的,即使它经常出错。然而,问题是关于将今天的应用程序大小与几个月前完成的事情进行比较,这与 IPA 文件大小相比更好。
  • @kspearrin 忘记应用商店的大小,使用此数据您将无法获得准确的比较(除非您提交并下载新版本)。应用经过加密压缩,但加密数据压缩不好。由于并非每个文件都需要加密,因此很难猜测最终大小(无需执行完全相同的过程)。
  • 这里的另一个有趣的发现是,在 iTunes Connect > All Builds 上查看应用程序时,将 10 月版本与我的最新版本进行比较,我看到 10 月版本压缩了 40mb,App Store 大小 50mb 与今天的压缩版本20mb,应用商店大小 80mb。狂野...让我尝试更多地挖掘 ipa 内容,看看是否能找到任何大的不同。
【解决方案3】:

您是否使用相同版本的 Xamarin 来构建您的代码。我愿意打赌这就是问题所在。自您上次发布以来,Xamarin 构建应用的方式发生了一些变化,并且正在扩大您的应用构建大小。

如果您确实拥有与您之前发布的代码相同的代码,那么您知道您当时使用的 Xamarin 版本是什么吗?老实说,因为唯一改变的是 Xamarin 编译器,所以这绝对是问题所在。

【讨论】:

  • 提到的 Xamarin 和 Xamarin.iOS 版本在 2016 年 10 月不可用:Xamarin Studio (6.3 build 863)、Xamarin.iOS (10.8.0.175),所以这已经改变了
  • 我假设没有,因为我正在使用今天的最新版本来构建。但是如何从版本更改中找出导致它的原因?
  • 必须深入研究补丁说明,看看它是否破坏了您当前使用的任何实现。
【解决方案4】:

有四件事要做:

从客户项目中删除 bin 和 obj 文件夹

将架构更改为仅支持 64

配置链接器。 最好是尝试在链接器处于活动状态的情况下构建您的应用,但是您使用的 nuget 包越多,这种可能性就越小

最重要的是: 将您的构建配置设置为 RELEASE 而不是 DEBUG (如果您忘记了这一点,商店会接受您的应用,但大小可以轻松翻倍甚至三倍)

这是最小设置的样子:

然后不要忘记 XAMARIN 会疯狂地向您的应用程序添加库。我曾经读过,根本没有内容的最小应用程序至少是 7 MB。这只会随着每个包和每个新依赖项而变得更大。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多