从 Android 开始:Java 或 Python (SL4A)
Posted
技术标签:
【中文标题】从 Android 开始:Java 或 Python (SL4A)【英文标题】:Starting with Android: Java or Python (SL4A) 【发布时间】:2011-03-21 18:59:15 【问题描述】:我刚订购了一部 android 智能手机,想开始尝试创建自己的应用程序。现在的问题是使用哪种语言,使用 SL4A(前 ASE)的原生 Java 或 Python。
我倾向于 Python,因为我比 Java 更了解它,但我想知道在 Android 上使用“二等”语言会缺少什么。在 SL4A 网站上,它也被称为 alpha 质量软件,这并不令人鼓舞。
我也不太确定脚本环境的限制是什么以及它们是否会出现问题。
【问题讨论】:
【参考方案1】:目前,您无法使用 SL4A 使用 Python(或任何其他脚本语言)创建可发布的程序。我听说有传言说这是 Google 正在做的事情,但即使他们确实启用了它,Python 应用程序也可能比 Java 慢而且耗电。此外,脚本 API 仅允许您访问本机 Java API 的有限子集。目前我不会考虑将 SL4A 用于严肃的开发工作,仅用于一次性脚本和原型设计。
看看Scala。它是 JVM 上的一种静态类型语言,但使用类型推断来消除您在 Java 中获得的大部分噪音。它还完全支持函数式编程,并具有很多 Python 特性。因为它是静态类型的,所以它与纯 Java 一样高效,没有任何缺点。恕我直言,这是 Java 应该首先出现的语言。
很多人都在写关于在 Android 上使用 Scala 的博客,因此请在 Google 上搜索更多信息。
【讨论】:
我一定会看看 Scala,应该会很有趣。 取决于您如何编写程序。如果你是一位经验丰富的 Python 程序员,那就去吧,因为它对于大多数(或几乎所有)目的来说足够快。尽可能避免使用 Java。 @otz:对于常规桌面程序,我同意你的观点,但正如我在帖子 (1) 中所说,目前无法将 python 脚本转换为可发布的 Android 应用程序,(2) SL4A Python 实现无法访问完整的 Android API,并且 (3) 对手机的电池使用至关重要。像 python 这样的动态语言将比 Java 或 Scala 等价物使用更多的汁液。 @dave Kirby,您可以将脚本打包成 .apk 并分发。查看code.google.com/p/android-scripting/wiki/SharingScripts 这真的很简单,老实说,我没有注意到我开发的任何东西都会“减速”。 Python 很棒,因为我已经有这么多正在运行的程序(urllib POST 应用程序),我可以非常轻松地移植到 android。将此与 sl4a 的 webview 集成相结合,您就有了一个很棒的工具,可以非常快速地完成您想做的事情! @Dave Kirby ~ g19 是正确的;您已经能够打包和分发 Python Android 应用程序已有很长时间了。使用 Java 可能有技术原因,但您的回答与事实相去甚远。 Android API 的“子集”并不是特别“有限”,适用于许多应用程序。这个问题特别提到想要“开始玩创建我自己的应用程序”,SL4A 比 Java更好 更适合,至少对于倾向于“Python,因为我知道它比Java”。【参考方案2】:更有可能取决于您将开发的应用程序类型。
我会从 Java 开始熟悉 Android SDK。无论如何,首先您需要查看一些示例和教程。其中大部分是用 Java 完成的,只有少数可能在 SL4A 的开发站点上。
还有原生开发的 Android NDK,可以用 C++ 编程。
但无论如何,Java 规则适用于一般应用程序。
【讨论】:
我没有考虑教程/文档,这是一个好点。所以我可能还是应该从 Java 开始,不管我最后使用的是哪种语言。【参考方案3】:为 Dave Kirby 的回答添加更新:
Issue 55, Distribute scripts as APKs,在 SL4A 的问题跟踪器中专门处理该问题。
SharingScripts 描述了一个正在制定的解决方案(现在可能已经完成)。唯一的问题似乎是您需要已经安装了解释器 APK。
【讨论】:
【参考方案4】:您可能想查看Ruboto,它是一个基于 JRuby 开发 Android 应用程序的框架,这意味着您的 JRuby 代码可以调用 Android API,也可以从 Android Java 端回调。 Here是一篇介绍文章。
【讨论】:
【参考方案5】:如果您想使用 Python 编写 Android 应用程序,请考虑使用 Kivy。将脚本打包成.apk文件的过程描述here。
问题是,生成的 .apk 会很大(300Kb 数据约为 7Mb)。这很明显,因为您需要在其中打包 Python 运行时和所有库。
我听说的另一个解决方案是Pygame for Android,但它适用于低位,所以你需要手动绘制图形。
不幸的是,我还没有尝试过任何这些方法,但看起来我很快就会开始使用 kivy。
【讨论】:
以上是关于从 Android 开始:Java 或 Python (SL4A)的主要内容,如果未能解决你的问题,请参考以下文章