Java是开发Android应用的唯一选择吗?

4

我在互联网上搜寻答案,但是我只能找到过时的、令人困惑的或者不回答问题而是告诉我去学习Java的答案。

我的基本问题如下:

  1. Java是唯一编写Android应用的方法吗?

  2. 这个问题会与问题#1相矛盾。因为Adobe AIR现在可以在Android手机上运行,这是否意味着我可以使用AS3编写而不需要Java,还是我需要将AIR应用包装在Java中?

  3. 像Facebook for Android、愤怒的小鸟和所有那些花哨的游戏,都是仅使用Java制作的吗?

  4. 如果#1==false && me==JAVA_HATER,你们推荐使用哪种语言或SDK。这是我的主要问题。

4个回答

8
  1. 这是唯一受谷歌支持的方法。还有其他方法,例如Adobe Air;如果你想要做一些工作来确定与标准Android类的链接,你可以复制并修改SDK中的Ant配方,以便使用针对JVM的任何语言。
  2. Air应用程序,就像其他平台一样,在运行在目标平台上的Air虚拟机中“本地”运行。(对于Android来说,这意味着它可能是用Java编写的,编译为JVM字节码,然后转换为Dalvik字节码。)请注意,可以编写本地(通常是ARM)代码并将其与基本Java框架链接起来,尽管此类代码存在许多限制。我想Appcelerator在别的页面提到的是通过将Javascript转换成其他语言来实现的(有几个Javascript到Java的转换器)。
  3. 大多数Android应用程序都是用Java编写的。一些应用程序,特别是那些声称它们不会在Android 2.0以下版本上运行的应用程序,具有本地代码库。请参阅#2。
  4. Java可以直接使用。“对于任何可以生成JVM字节码并知道如何链接到Java类库的语言,只需进行一些工作即可编写代码”,如我上面提到的(#1)。(我完全希望有人提供Scala链接。:)

根据http://www.codecommit.com/blog/java/interop-between-java-and-scala,这意味着有人需要进行一些Ant配方的黑客攻击,然后他们就可以了。 - geekosaur
1
1 显然是错误的,因为您提到了NDK。还有其他例子,比如Scripting Layer for Android - Matthew Flaschen
取决于你的解释。最近才有可能从NDK中进行I/O,而不必回调Java,例如,甚至最近才能使用NDK编写整个应用程序。 - geekosaur
Mono在Android上受支持吗? - user744186

2
Adobe Air for Android可以为您处理集成 - 您不需要编写任何Java代码即可使其工作。它实际上是一个纯粹的AIR应用程序,如果设备的用户安装了Air for Android,则您的应用程序将正常工作,就这么简单。
本地代码(Java)与AIR之争已经持续了很长时间 - 根据您正在制作的应用程序类型,您可能会从编写Java中受益,因为这是项目中的一层少。另一方面,如果您没有动画化十亿个形状或其他内容,则差异微小 - 因此在许多情况下,AIR就可以胜任。
您拥有的另一个选项是使用HTML / JavaScript构建应用程序,然后将其简单地嵌入到Java或ObjC包装器中,该包装器在Android / iPhone上编译为本机应用程序 - 许多应用程序,特别是仅用于某种数据集的用户界面的应用程序使用此方法。
因此,根据您的用例,您有很多选择! :)

0
你可以尝试使用Appcelerator。你可以用JavaScript编写代码,然后它会将其转换为Android应用程序。

0

Android NDK 提供了以下功能:

一组工具和构建文件,用于从 C 和 C++ 源代码生成本地代码库。


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