安卓中的JavaScript应用程序

9
我是Android编程的新手,正在寻找一些通用知识。我考虑使用JavaScript编写我的应用程序逻辑,以便相同的代码可以在Web应用程序和桌面应用程序中执行。它也能在Android上运行吗?我知道以下内容:
SL4A被标记为α质量,用户需要安装它才能使这样的应用程序工作。尽管如此,它提供了访问Android API的功能。据我所知,SL4A脚本也无法进入Android Market。
简单的Web应用程序无法访问大多数Android API。
是否可能编写一个简单的Java应用程序,该应用程序将嵌入带有JavaScript代码的HTML小部件,并提供一些包装器来访问必要的API?
我不是在寻找完全可移植的东西 - 我打算手动适应每个环境的UI。我只想拥有所有端口共同的内部逻辑。
4个回答

11

PhoneGap允许您编写基于HTML的应用程序,不仅可以在Android上工作,还可以在iPhone、Windows Phone 7、WebOS等平台上工作。API已经标准化了,因此您可以在所有平台上使用相同的页面。

大多数平台都支持最常见的本地功能。(以下是支持每个平台的特性表)此外,如果您发现使用其API无法复制某个功能,则可以以本机平台语言(例如,对于Android来说,那将是Java)编写插件,然后从您的HTML/Javascript页面调用该插件。


太好了!能否也使用本地UI?在安卓上使用Intents? - liori
@liori:你可以按照自己的意愿将HTML活动与标准Android活动混合,因此你可以将HTML与原生UI混合使用。监听意图可以通过标准Android方式完成。发送意图可以通过插件完成(示例)。 - Sebastian Paaske Tørholm
1
如果你只对PhoneGap的免费和开源部分感兴趣,可以查看Adobe贡献给ASF的Apache Cordova。(信息 - andrew-e

8
如果您想使用JavaScript并访问本地API,则应尝试Appcelerator.com。这些人提供此功能。

非常有趣。我一直在寻找更接近Android本身的东西,但这也可能符合要求。 - liori

2

有一个Rhino,它是用Java编写的Javascript引擎。它可以在Android中使用,并且被Appcelerator的Titanium在此处的另一个答案中提到。

然后可以编写并封装Java的用户界面和Android特定API,然后由Javascript编写的逻辑代码调用并通过Rhino运行。


0
考虑到GWT,它是一个Java到JavaScript编译器。你可以用普通的Java来编写你的逻辑和其它很多代码(有一些事情(例如反射)在Java中是不能做的,但在JavaScript中也无法完成)。应用程序如Google收件箱正在使用GWT来在JavaScript中重用大量的代码。它们不仅重用逻辑,还可以重用依赖注入、架构、AJAX调用等等。而且,GWT在浏览器和JVM中都比JavaScript更快。你可能会遇到的最大问题是,GWT比JavaScript更复杂。正常的Java已经很复杂了。让它在JVM和浏览器上运行只会使事情变得更加复杂。此外,GWT从一开始就被设计用于非常复杂的Web应用程序。

1
问题是关于使用基于JavaScript的解决方案进行选择评估,而不是基于Java的。因此,在这里GWT不是一个有效的答案。 - liori

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接