2016-12-03 56 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