2016-11-08 6 views
3

Как повысить производительность запуска/более низкое время запуска (время, которое используется между приложением, и вступительный экран появляется) в моем приложении Android, написанном на C# с использованием подхода Xamarin.Android ,Повысить производительность запуска в приложении android с помощью xamarin

Поскольку мое устройство не является самым старым (Motorola Moto G3), я задаюсь вопросом, почему в некоторых крупных коммерческих приложениях/играх, таких как Clash of Clans и Facebook, так мало времени для «черного экрана» и моего маленького, немного-дрянного Android-приложения, даже не загружает данные из локального хранилища (просто создавая datamodel из жестко закодированных значений), занимает так много времени, чтобы показать экран ввода.

Даже при создании полного нового приложения и начиная с этого на моем телефоне через ADB есть некоторая задержка Заранее спасибо

ответ

1

Я бы первый вы проверить фактическую разницу между конфигурацией Debug против подписанного Release конфигурации с точки зрения «производительности запуска».

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

К сожалению, конфигурация Debug имеет немного элементов, которые необходимы, чтобы быть на месте для того, чтобы отладить. Это также известно как Shared Runtime и Shared Platform. Это ~ 10 МБ для копирования при первом запуске.

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 (на странице «Свойства упаковки») включает сборку сборок Ahead в режиме «Вперед» (AOT). Когда этот параметр включен, служебные данные запуска Just In Time (JIT) сводятся к минимуму путем предварительной компиляции сборок перед запуском. Полученный нативный код включен в APK вместе с несвязанными сборками. Это приводит к сокращению времени запуска приложения, но за счет немного больших размеров APK.

Для опции компиляции AOT требуется лицензия Enterprise или выше. Компиляция AOT доступна только тогда, когда проект настроен для режима Release, и по умолчанию он отключен. Для получения дополнительной информации о компиляции 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

Пожалуйста, имейте это примечание в виду при использовании как AOT и LLVM:

ПРИМЕЧАНИЕ: АОТ в настоящее время является experimental feature. Это не рекомендуется для использования в производстве. AOT и LLVM были доступны в Xamarin.Android 5.1, но он больше не доступен в более поздних версиях Xamarin.Android. Для получения дополнительной информации см. release notes.

Другие элементы, которые могут быть связаны, но я не буду вдаваться в подробности на основе вашей «Файл -> Новый проект» предположения:

  • Doing слишком много работы перед применением выходит OnCreate()
  • Не сокращается ваш .apk столько, сколько это возможно для быстрого времени загрузки
+0

Добавлен записку на основе ссылке, которую я уже имел в [АОТ документации] (https://developer.xamarin.com/guides/ Androi d/deployment, _testing, _and_metrics/publishing_an_application/part_1 _ -_ prepare_an_application_for_release/# AOT_Compilation): –

+0

Простите, пропустил это, еще недостаточно кофе :-) – SushiHangover

+0

AOT были удалены с Xamarin 6.1 ([примечание к выпуску] (https: // разработчик .xamarin.com/релизы/android/xamarin.android_6/xamarin.android_6.1)) Я сохраню свое медленное стартовое приложение: s – Drakkin