适用于嵌入式触摸屏应用的Android vs Linux

时间:2012-02-20 20:48:31

标签: android linux

我正在看一个需要LCD多点触控屏幕,LCD驱动程序,webkit浏览器,Avahi,Web服务器以及用C ++编写的引擎的嵌入式项目。

Android乍一看看起来它的大多数正确的组件开箱即用,修改最少......但是对于小内存占用嵌入式设备而言,使用JVM似乎是重量级的(128-196MB分钟)除了我们的代码是C ++。看起来你不能把JVM拉出去,因为主要的OS组件是用Java运行的(是吗?)。

Linux似乎有大部分可以放在一起的部分,没有不必要的瑕疵。以下是主要问题:

  • 一旦将GUI部件组合在一起,linux的内存占用量仍远小于Android,假设Android中的JVM和应用程序组件对项目无用(现在我们的GUI-less linux版本大约为24MB) ?
  • 如果您不需要在Java中运行任何用户应用程序,可以在没有JVM组件的情况下运行Android以减少内存占用吗?
  • 你能在Android上编写一流的C ++应用程序吗?
  • linux是否具有成熟的多点触控界面,具有系统范围的触控键盘,触控GUI,可触摸的broswer手势(滚动,缩放等)。或者它需要大量的自定义UI编码?

2 个答案:

答案 0 :(得分:3)

您的帖子中存在许多误解。我将首先列举你的问题和答案:

  • 一旦将GUI部件组合在一起,linux的内存占用量仍远小于Android,假设Android中的JVM和应用程序组件对项目无用(现在我们的GUI-less linux版本大约为24MB) ?

这一切都取决于您选择使用的窗口管理器。我的直觉就是在这一点上接近成熟触摸支持的任何东西都会比android更重或更重。

  • 如果您不需要在Java中运行任何用户应用程序,可以在没有JVM组件的情况下运行Android以减少内存占用吗?

Android不使用JVM。 Android使用java语言,但使用专为嵌入式设备设计的dalvik虚拟机。共同点在于它们是虚拟机的事实。

  • 你能在Android上编写一流的C ++应用程序吗?

您可以使用NDK在C或C ++中编写大部分应用程序,但是,任何以这种方式编写的模块都需要通过使用java / dalvik SDK编写的android来调用。这样,任何性能关键模块(如进行大量计算)都可以是原生的,但gui层不会(虽然通常具有GUI层性能不太可能成为问题)。本机android窗口和UI库是用Java编写的,你必须重做大部分工作才能在NDK中获得可用的UI元素,因为谷歌没有打算使用NDK。

我的建议是使用普通的SDK对应用程序进行原型设计,为任何可以从硬件加速中受益的东西留下存根(保持模块化,使其不会过于相互依赖)

  • linux是否具有成熟的多点触控界面,具有系统范围的触控键盘,触控GUI,可触摸的broswer手势(滚动,缩放等)。或者它需要大量的自定义UI编码?

取决于您使用的窗口管理器。无论你选择什么,你都可能需要愚弄,直到找到可行的组合。我所知道的没有一个伟大的集成发行版解决方案(尽管其他人可能)。我对这片土地的印象是,在这方面并没有做太多的事情。

我想要添加的最后一件事是在Dalvik(甚至是JVM)中执行的编写良好的java代码可以接近本机代码的速度运行。如果您知道自己在做什么,并了解什么是引用,那么用于什么目的的集合类型(提示:并非所有内容都是数组),并且不是在整个地方复制对象,Java非常好。

答案 1 :(得分:1)

我不是在谈论经验,而是在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是否支持平滑滚动和缩放(如果您计划在浏览器中按照我的理解运行应用程序)。