2016-12-03 25 views
2

我想在我的iOS应用程序中添加几个扩展,但似乎一旦我这样做了,我很快就超过了Apple放置在无线下载的100Mb限制。可能会减少Xamarin中iOS扩展的大小?

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

每一个裸露的骨头扩展导致我的应用程序中增加了6Mb。

由于Xamarin运行时大概是嵌入到每个实例中,有什么办法可以在不同的扩展中共享这个运行时?

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

我还有其他选择吗?

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

+0

每个'.appex'都是一个独立的应用程序,基本上运行在自己的沙箱中,并且每次被调用时都会作为独立的进程启动。因此,即使相同的扩展由不同的应用程序启动,它们也不会共享相同的内存寻址空间,因此不可能在同一主机应用程序的多个扩展之间共享运行时。我个人认为你真的需要11个独立的外部链接吗?它们中的任何一个都不使用扩展上下文来与主机应用程序通信,因此可以移动到单独的主机应用程序等等。 – SushiHangover

回答

3

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

启用所有组件(和所有扩展)的管理连接。

此外Xamarin.iOS会自动创建将由应用程序和所有的扩展使用Mono的运行单个嵌入式框架(你可以通过验证yourapp.app/Frameworks/Mono.framework存在检查)。

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

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

+0

AOT共享什么时候可以上线? – kspearrin

+0

@kspearrin它已经在Beta频道提供。 –

+0

很好,更新是否会自动发生,或者是否需要启用某些设置?关于它的任何文档? – kspearrin