Подтвердить что ты не робот

Android против Linux для встроенного приложения для сенсорного экрана

Я смотрю на внедренный проект, для которого требуется ЖК-экран мультитач, драйвер LCD, браузер webkit, Avahi, веб-сервер и наш движок, написанный на С++.

Android на первый взгляд выглядит так, что он имеет большинство правильных компонентов из коробки с наименьшей модификацией... Но использование JVM кажется тяжелым для небольшого встроенного устройства с памятью (128-196 Мбайт мин) и кроме нашего кода С++. Похоже, вы не можете вытащить JVM из-за того, что основные компоненты ОС работают на Java (правда?).

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

  • После того, как части GUI собраны вместе, Linux все еще значительно уменьшает объем памяти, чем Android, предполагая, что JVM и компоненты приложения в Android не полезны для проекта (прямо сейчас наша сборка Linux без использования Linux составляет около 24 МБ)?
  • Можно ли запускать Android без компонентов JVM для уменьшения объема памяти, если вам не нужны какие-либо пользовательские приложения, работающие на Java?
  • Можете ли вы написать приложения первого класса на С++ в Android?
  • У linux есть зрелый мультитач-интерфейс с общесистемной сенсорной клавиатурой, сенсорный графический интерфейс, сенсорные жесты браузера (прокрутка, масштабирование и т.д.). Или требуется много пользовательского кодирования пользовательского интерфейса?
4b9b3361

Ответ 1

В вашем посте есть ряд заблуждений. Я начну с перечисления ваших вопросов и ответов:

  • После того, как части GUI собраны вместе, Linux все еще значительно уменьшает объем памяти, чем Android, предполагая, что JVM и компоненты приложения в Android не полезны для проекта (прямо сейчас наша сборка Linux без использования Linux составляет около 24 МБ)?

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

  • Можно ли запускать Android без компонентов JVM для уменьшения объема памяти, если вам не нужны какие-либо пользовательские приложения, работающие на Java?

Android не использует JVM. Android использует язык java, но использует виртуальную машину dalvik, предназначенную для встроенных устройств. Общность заканчивается тем фактом, что они виртуальные машины.

  • Можете ли вы написать приложения первого класса на С++ в Android?

Вы можете писать большие части своего приложения на C или С++ с помощью NDK, однако любой написанный таким образом модуль должен быть вызван через android, написанный с использованием SDK java/dalvik. Таким образом, любой критически важный для производительности модуль, такой как выполнение обширных вычислений, может быть родным, но уровень gui не будет (хотя, как правило, с уровнем уровня графического интерфейса пользователя, скорее всего, будет проблемой). Собственные андроидные окна и библиотеки UI написаны на Java, вам придется переделать большую часть работы, чтобы получить полезные элементы пользовательского интерфейса в NDK, поскольку Google не намеревался NDK для этого.

Мой совет: прототип приложения, использующего обычный SDK, оставляйте заглушки для чего-то, что может выиграть от аппаратного ускорения (держите его модульным, чтобы он не был слишком взаимозависимым)

  • У linux есть зрелый мультитач-интерфейс с общесистемной сенсорной клавиатурой, сенсорный графический интерфейс, сенсорные жесты браузера (прокрутка, масштабирование и т.д.). Или требуется много пользовательского кодирования пользовательского интерфейса?

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

Последняя вещь, которую я хочу добавить, - это хорошо написанный Java-код, исполняемый в Dalvik (или даже JVM), может работать близко к скорости собственного кода. Если вы знаете, что делаете и понимаете, когда что-то является ссылкой, какие типы коллекций использовать для какой-либо цели (подсказка: не все - это массив) и не реплицируют объекты повсюду, Java довольно хорош.

Ответ 2

Я не говорю по опыту, но посмотрите http://www.omgubuntu.co.uk/2012/02/kde-spark-tablet-opens-pre-order-registration/ или даже проще на https://www.google.com/search?q=ubuntu+touch+interface

Итак, у Linux есть поддержка прикосновения. Не уверен в мультитач, хотя, насколько я знаю его там (но у меня есть 0 опыта).

Что касается прокрутки и масштабирования, я думаю, все будет зависеть от того, что вы используете в спине. Реальный вопрос должен быть, если webkit поддерживает плавное прокручивание и масштабирование (если вы планируете запускать приложение в браузере, как я понимаю).