2016-11-08 128 views
3

如何在使用Xamarin.Android方法編寫的C#中編寫的Android應用程序中提高啓動性能/降低啓動時間(用於點擊應用程序和介紹屏幕之間的時間) 。使用Xamarin在Android應用程序中提升啓動性能

由於我的設備不是最古老的(摩托羅拉Moto G3),我想知道爲什麼一些大型商業應用/遊戲,如Clash of Clans和Facebook有那麼一點點「黑屏」時間和我小小的易碎的Android應用程序甚至不會從本地存儲裝載數據(僅從硬編碼值創建數據模型)需要很長時間才能顯示介紹屏幕。

創建一個完整的新的應用程序,並通過ADB我的手機上開始此即使有一些延遲提前 感謝

回答

1

我首先你查主場迎戰簽署Release配置的Debug配置之間的實際差異在「啓動性能」方面。

https://developer.xamarin.com/guides/android/advanced_topics/application_package_sizes/#Release_Packages

可悲的是一個Debug配置有一點是必須到位,以調試項目。這也被稱爲Shared RuntimeShared Platform。這是大約10MB的第一次運行復制。

https://developer.xamarin.com/guides/android/advanced_topics/application_package_sizes/#Debug_Packages

複製這些核心組件只進行一次,因爲它需要相當長的時間,但允許在調試模式下運行的任何後續應用,以利用它們。最後,我們複製實際的應用程序,這是小而快的:

因此,這可能是一個因素。但是,讓我們來談談其他一些選項,但我們在這裏:

您也可以使用Fast Assembly Deployment,它將直接在設備上安裝程序集一次,然後它將複製自上次部署以來已修改的文件。

https://developer.xamarin.com/guides/android/advanced_topics/application_package_sizes/#Fast_Assembly_Deployment

注:這兩個設置 「中的」 默認情況下,通過以下的MSBuild屬性<AndroidUseSharedRuntime>true</AndroidUseSharedRuntime><EmbedAssembliesIntoApk>False</EmbedAssembliesIntoApk>

接下來,您可以使用AOT(注:是實驗性的寫作時間)

AOT Compil (在「打包屬性」頁面上)啓用組件的前期(AOT)編譯。啓用此選項時,通過在運行時之前預編譯程序集,將Just In Time(JIT)啓動開銷降至最低。生成的本機代碼與未編譯的程序集一起包含在APK中。這會縮短應用程序的啓動時間,但會以較大的APK大小爲代價。

AOT編譯選項需要Enterprise許可證或更高版本。 AOT編譯僅在項目配置爲發佈模式時可用,並且默認情況下禁用。有關AOT編譯的更多信息,請參閱AOT。

https://developer.xamarin.com/guides/android/deployment,_testing,_and_metrics/publishing_an_application/part_1_-_preparing_an_application_for_release/#AOT_Compilation

最後,你可以啓用LLVM Optimization Compiler(注:在寫作的時間實驗)

當AOT編譯選項啓用(打包屬性頁上),您可以選擇啓用LLVM Optimizing Compiler將AOT編譯的程序集轉換爲本機代碼。 LLVM編譯器創建更小更快的編譯代碼,但代價是生成時間更慢。 LLVM編譯器默認是禁用的。

請注意,LLVM Optimizing Compiler選項需要Business許可證或更高版本,並且僅在啓用AOT編譯時纔可用。

https://developer.xamarin.com/guides/android/deployment,_testing,_and_metrics/publishing_an_application/part_1_-_preparing_an_application_for_release/#LLVM_Optimizing_Compiler

同時使用AOTLLVM時,請保留此註記:

注:AOT目前是experimental feature。不建議用於生產。 AOT和LLVM在Xamarin.Android 5.1中可用,但在後來的Xamarin.Android版本中不再可用。欲瞭解更多信息,請參閱release notes

可以與其他項目,但我不會細講根據您的「文件 - >新建項目」的假設:

  • 應用程序之前做的工作太多了退出OnCreate()
  • 不縮水的.apk就像你可能可以用於基於我已經在[AOT文檔(鏈路上的快速加載時間
+0

添加了註釋https://developer.xamarin.com/guides/ androi dorax_development_application/part_1 __ _ prepare_an_application_for_release /#AOT_Compilation): –

+0

對不起,錯過了,還沒有足夠的咖啡呢:-) – SushiHangover

+0

自Xamarin 6.1([發佈說明])(https:// developer .xamarin.com/releases/android/xamarin.android_6/xamarin.android_6.1))我會保持我的慢啓動應用程序:s – Drakkin

相關問題