可以减少Xamarin中iOS扩展的大小吗?

时间:2016-12-03 18:06:08

标签: xamarin xamarin.ios ios-extensions

我想在我的iOS应用程序中添加几个扩展程序,但似乎一旦我这样做,我很快就会超过Apple在空中下载时的100Mb限制。

  • com.apple.usernotifications.content-extension
  • com.apple.usernotifications.service
  • com.apple.ui服务
  • 文件选择器扩展

每个裸骨扩展都会导致我的应用程序增加6Mb。

由于Xamarin运行时可能嵌入到每个实例中,有什么方法可以在各种扩展中共享此运行时?

这是否可用作mtouch编译器标志?

我还有其他选择吗?

现在我被要求添加11个扩展,我已经达到了70MB,我甚至还没有开始编码或添加资产。

1 个答案:

答案 0 :(得分:3)

关于减少Xamarin.iOS应用程序大小的最重要规则仍然有效:

为所有程序集(以及所有扩展程序)启用托管链接程序。

此外,Xamarin.iOS将自动为Mono运行时创建一个嵌入式框架,该应用程序和所有扩展程序将使用该框架(您可以通过验证yourapp.app/Frameworks/Mono.framework存在来检查这一点。) p>

另外请确保您没有将部署目标设置为低于8.0(对于主应用程序)的任何内容,除非您真的需要它(因为如果您将部署目标设置为低于8.0的任何值,我们必须将Mono运行时嵌入到主要的可执行文件,因为iOS 7不支持嵌入式框架。)

不幸的是,我们目前无法从基类库(也不是您自己的代码)共享任何AOT编译的代码,因此例如mscorlib.dll(以及所有AOT编译的本机代码)都包括在内应用程序和每个扩展,但这将在未来的版本中发生变化(我现在正在实施)。​​