Как получить минимальные требования к оборудованию для приложения Android

Я и несколько членов моей команды разработали приложение для Android, которое собирает данные о полевых условиях с помощью мобильных устройств.

Сейчас это приложение идет в производство. Таким образом, обычные люди будут использовать это приложение. Нам также необходимо написать документацию, в которой будут объясняться все, что представлено в приложении, и какие минимальные требования к оборудованию необходимы для безошибочного запуска этого приложения.

Теперь, как мне узнать, каковы минимальные требования к оборудованию?

В основном в моем приложении около четырех TextFields, три Spinners, Dates, EditTexts и два ImageViews.

Итак, как мне узнать, какие минимальные требования к памяти необходимы для запуска этого приложения.

Я попробовал это приложение на одном мобильном устройстве, где почти вся память занята каким-то другим приложением. Там мое приложение не может сделать снимок. И когда я удаляю некоторые приложения, мое приложение работает нормально.

Вот почему я хочу знать, какие минимальные требования к памяти необходимы для запуска моего приложения.


person Vinit ...    schedule 12.03.2013    source источник
comment
Ваше приложение использует камеру?   -  person Raghav Sood    schedule 19.03.2013
comment
Я это приложение использует камеру. Сетевой сервис, база данных sqlite, GPS по спутнику и по поставщику услуг....   -  person Vinit ...    schedule 25.03.2013


Ответы (6)


Минимальные требования будут зависеть и в основном будут включать тестирование и документирование следующих моментов:

  1. Уровень API: минимальная поддерживаемая версия Android, в основном известная разработчику. Было много серьезных изменений между API в Android. support v4 и v7-совместимые библиотеки очень помогают, но они не охватывают все аспекты.

  2. Возможности устройства. Запишите все функции, которые использует ваше приложение. (например, сенсорный экран, камера, акселерометр, подключение к сети и т. д.). К счастью, вы можете объявить, что в манифесте приложения (uses-feature) и магазине игр будут отфильтровываться неподдерживаемые устройства.

  3. RAM: используйте DDMS/Android Studio, чтобы увидеть использование памяти в реальном времени на эмуляторе и на реальном устройстве. Старайтесь использовать столько оперативной памяти, сколько сможете, запуская различные функции приложения и поддерживая его работу в течение длительных интервалов времени. Возьмите это минимальное и максимальное использование в качестве оценки. Инструменты DDMS, такие как TraceView и т. д., также позволяют просматривать распределение объектов в куче, потоках и выполнять профилирование методов. Запускайте Monkey Tool на длительное время, чтобы нагрузить приложение.

  4. Скорость ЦП: ЕСЛИ приложение выполняет интенсивные вычисления, преобразование данных и т. д., возможно, вы захотите запрограммировать некоторые журналы меток времени в таком вычислительном коде. Убедитесь, что вы установили скорость ЦП так, чтобы любые вычисления, которые необходимо выполнить, выполнялись за достаточное время, не вызывая слишком большой задержки устройства. Также в случае визуального рендеринга (игр) основным фактором является хорошая частота кадров. В этом случае вы можете сравнить реальные устройства по частоте кадров и выбрать чипсеты высокого класса. Вы также можете рекомендовать пользователям многоядерные устройства.

  5. Совместимость ЦП/ГП. Еще одна важная деталь заключается в том, что если приложение содержит код C/C++, этот код может не работать на некоторых типах ЦП (MIPS, ARM или x86). То же самое верно для приложений, использующих версии OpenGL ES и доступные расширения. Устройства имеют разные процессорные/графические чипсеты.

  6. Диск: оцените размер приложения после установки. Обратите внимание, что минимальное требование к диску для приложения — это пространство, необходимое для хранения самого приложения, чтобы оно могло хотя бы запуститься, и не включает кеши, базы данных или пользовательский контент, который он создает при использовании.

  7. Размер экрана. Несмотря на то, что всегда рекомендуется использовать адаптивный и гибкий пользовательский интерфейс, ваше приложение может использоваться только при определенных размерах экрана. Таким образом, совместимые размеры экрана могут быть приняты во внимание.

  8. Что вы не можете контролировать. Помните, что вы не можете контролировать, какие приложения могут запускать другие пользователи приложений, поэтому можно с уверенностью заявить, что вашему приложению требуется столько бесплатных приложений. оперативной памяти на устройстве и, если предположить, что это лучший сценарий, объявить, что на устройстве установлено как минимум столько же оперативной памяти. Например, вы отметили, что ваше приложение занимает 200 МБ при максимальном использовании, поэтому требуется только устройства с 512 МБ+. Также вы не можете контролировать, какой размер SD-карты будет у пользователя, поэтому приложение должно сразу сообщать пользователю, что оно не может работать, когда диск заполнен.

Наконец, хорошее тестирование — это то, что превращает оценки в реальные ориентиры. И лучше основывать требования на бенчмарках, а не только на оценках.

ОБНОВЛЕНИЕ:

Есть ли какой-либо API или класс от Android, который дает информацию о том, каковы минимальные требования к памяти, в зависимости от того, какие поля я использую в своем приложении и какое разрешение я беру на мобильный телефон.

  1. API не может точно предсказать время выполнения. В вашем коде будет много if и else, плюс пользовательский ввод, вы не можете предсказать, по какому именно пути пойдет создание и выполнение объекта. Вы можете контролировать время выполнения только извне, используя такие инструменты, как DDMS.

  2. В отличие от Apple, Android — открытая система, возможности аппаратного обеспечения устройств, которые производители вольны выбирать, огромны. Добавьте к этому настройки, которые они делают в ПЗУ своих устройств. Ни один общий API не будет отслеживать все это. Просто придерживайтесь Android API и стандартных спецификаций, избегайте использования скрытых API и т. д.

person S.D.    schedule 24.03.2013
comment
Я думаю, что это хороший ответ среди всех остальных. Но здесь мне нужно изучить всю информацию о моем приложении, пытаясь снова и снова на разных устройствах, а также на эмуляторе. Есть ли какой-либо API или класс от Android, который дает информацию о том, каковы минимальные требования к памяти, в зависимости от того, какие поля я использую в своем приложении и какое разрешение я беру на мобильный телефон. - person Vinit ...; 25.03.2013

Вопрос, который вы должны задать себе

<сильный>1. Каковы мои требования к памяти? Вам нужно много памяти (не физической, она находится в куче) для обработки данных или она минимальна? Сегодня большинство устройств имеют размер кучи 64 МБ, но это зависит от производителя. Даже для одного и того же уровня API они разные. Узнайте свой минимум, а затем убедитесь, что у вас есть доступный объем кучи памяти.

Чтобы контролировать потребление памяти во время выполнения, проверьте это

чтобы узнать, сколько оперативной памяти доступно на текущем устройстве, проверьте этот и это.

Помните, что Android не похож на Windows, и каждое приложение запускается с одинаковым объемом кучи памяти, и он постоянен для каждого приложения на этом устройстве. Это означает, что приложениям не разрешено выходить за пределы этой доступной памяти. Вы можете запросить дополнительную память с помощью этого тега в манифесте android:largeHeap="true", но эта функция недоступна для версии ОС до 3.0.

Я попробовал это приложение на одном из мобильных устройств, где почти вся память используется каким-то другим приложением. Там мое приложение не может сделать снимок. И когда я удаляю какое-то приложение, мое приложение работает нормально.

Приведенное выше предположение довольно запутанно, потому что, когда ваше приложение под управлением Android размещает все остальные приложения на стороне, это означает, что ваше приложение будет иметь память, определяемую вашим размером кучи, и если ОС решит, что ей нужно больше памяти или не сможет выделить больше, это убьет эти процесс. Android отдает высокий приоритет текущей задаче. Поэтому, если вы взаимодействуете с приложением, маловероятно, что у него будет меньше памяти, чем размер кучи. у них могут быть другие причины проблем с другими приложениями.

<сильный>2. Каковы мои требования к API? Если вы используете какой-либо специальный API, который недоступен для более старого API и уровня, у вас есть два варианта: либо вы говорите, что ваше приложение просто не будет поддерживать эту версию API, либо вы можете сделать резервный перенос эта конкретная особенность.

<сильный>3. Каковы мои требования к оборудованию? Спросите себя, используете ли вы какое-либо специальное программное или аппаратное обеспечение, доступно ли это специальное оборудование для всех устройств или нет? Например, NFC, блютуз.

<сильный>4. Каковы мои требования к отображению? Это приложение предназначено только для мобильных устройств или для мобильных устройств и планшетов? А как насчет тех 7 дюймов, которые находятся между планшетом и мобильным телефоном?

<сильный>5. Каковы мои требования к локализации? Использует ли это приложение какой-либо специальный набор символов? Что делать, если на определенном устройстве нет этих символов.

И, к вашему сведению, объем упомянутого вами объекта не должен занимать более нескольких МБ. Но будьте осторожны при работе с растровым изображением. Читать это

person minhaz    schedule 25.03.2013

Кажется, гарантируется, что любой процесс в Android будет иметь не менее 16 МБ памяти, большинство современных устройств позволяют увеличивать кучу до 24+ МБ.

см. описание http://developer.android.com/reference/android/app/ActivityManager.html#getMemoryClass()

Все управление памятью осуществляется на стороне ОС, и существуют приоритеты для процессов и потоков, описанные в http://developer.android.com/guide/components/processes-and-threads.html#Lifecycle

поэтому, если ваше приложение находится на переднем плане, скорее всего, у вас достаточно ресурсов для обработки изображения с камеры.

какой API вы используете для захвата изображения?

person Andrew Matiuk    schedule 19.03.2013

Лучший способ узнать, будет ли ваше приложение работать на определенном оборудовании, — протестировать его на этом оборудовании. Спросите своих друзей, есть ли у них старые телефоны Android, и протестируйте на них свое приложение.

В худшем случае создайте несколько виртуальных устройств Android с разной памятью. Остерегайтесь, однако, эмулятор Android неутешительно медленный, даже с аппаратным ускорением.

person firyice    schedule 20.03.2013

Как говорит @veon, вы можете сделать некоторые оценки. Однако это всегда будет немного непредсказуемо, потому что вы хотите знать, сколько оно будет использовать в разных контекстах, и вам нужно, чтобы пользователи знали об использовании других приложений на своих телефонах.

Насколько я понимаю, вам в первую очередь нужно предоставить четкую документацию. Может быть намного проще (для вас и для всех) задокументировать это следующим образом:

Это приложение будет работать на всех последних стандартных телефонах Android (версия Android XXX и выше). Однако, если запущены другие приложения, в частности, те, которые потребляют много памяти, это может повлиять на производительность. Если у вас проблемы с производительностью, удалите другие приложения, которые занимают много памяти и процессов. Если вам нужна помощь в определении этого, воспользуйтесь таким приложением, как ZDbox. .

Для справки, у меня нет ссылок на ZDbox, я просто использую его как пример.

person Neil Townsend    schedule 20.03.2013

Вот почему я хочу знать, каковы минимальные требования к памяти для запуска моего приложения.

Используйте инструмент мониторинга от little eye labs. Он отслеживает энергопотребление, потребление памяти, потребление ЦП и сетевую активность вашего приложения среди других вещей. Вы можете загрузить его на 30-дневную пробную версию. Это должно дать вам четкое представление о ресурсах, потребляемых вашим приложением. Однако я должен сказать, что приложения обычно не выпускаются с набором аппаратных требований. Контролируйте использование памяти/батареи, и все будет в порядке.

Что касается нехватки памяти, это происходит, когда вы показываете снимки, которые делает камера, или камера сама сбивает приложение? Вы освобождаете ресурсы, удерживаемые камерой? Взгляните на этот вопрос - Исключение камеры Android из памяти

person Deepak Bala    schedule 24.03.2013
comment
Этот ответ содержит мертвую ссылку. - person Joel Dean; 16.08.2017