使用Lua开发Android应用程序是否可行?

22

我阅读了Mobile Orchard上的这篇文章,由于我计划开始学习Android开发,它让我考虑:是否可能仅使用Lua来开发Android应用程序?我在谷歌上搜索了这个话题,但没有找到明确的答案。我知道Java是Android的“基本风格”,但对于像我这样的编程新手(初级Python,基本C ++),Lua似乎更清晰、更友好。那么问题来了:是否可以仅使用Lua来开发Android应用程序?如果可以,请指导我从哪里入手?


3
只使用Lua语言,或最少量的Java代码嵌入Lua,以实现Lua处理应用程序所有机制。 - Straightfw
1
学习Java会为您节省时间,并在长期内对您更有益。 - EGHDK
为什么选择Java而不是只使用NDK? @EGHDK - user1095108
7个回答

16

我一直在使用Lua编写移动应用程序,用于从iOS和Android手机远程控制机器人。该应用程序是纯Lua编写的,运行在Mosync平台上,使用MobileLua。还需要进行一些工作,但不太复杂。

我还拥有一个调试器和一个支持远程Lua脚本调试(包括在Android或iOS设备上运行的MobileLua脚本)的Lua IDE(ZeroBraneStudio)。我提供了一个演示应用程序,您可以将其用作客户端来运行简单的脚本并检查远程调试的情况。

[更新]如果您对更多以游戏为导向的选项感兴趣,可以选择以下几种:(1)前面提到的Corona SDK,(2)Moai,以及(3)Gideros Mobile。还有Marmalade Quick和Cocos2d-x Lua绑定(例如quick-cocos2d-x)。所有这些工具包/框架都允许使用Lua进行开发。

这里有一个详细的比较:Moai vs. Corona


8
我知道这是一个较早的问题,但为了纠正一些错误信息(在评论中)给以后来的人们,Corona SDK(截至2013年春季)有一个免费的起始版 - 没有闪屏或任何东西。它和“专业版”的主要区别在于,您不能在起始版中进行应用内购买。但您可以使用它来创建可出售的应用程序等。它没有到期日或任何东西。
回答原始问题,学习Java可能会让您编写Android应用程序,但如果您还想针对iOS,则没有很好的选择。通过从一开始选择跨平台的东西,您可以针对Android或iOS或两者都进行定位。Lua(已经提到的任何一种风格)是移动开发的优秀基础语言。

哇,非常感谢您的回答!虽然这个问题很旧了,但这些信息对我仍然非常有用 :) 我不知道Corona决定创建一个允许您免费发布的版本。这是一些好消息,再次感谢 :)至于Lua - 自从提出这个问题以来,我已经在Java中编写了相当多的代码,但是我看到您另外一个声音鼓励使用Lua,所以我想我也可以尝试一下 :) - Straightfw

7
问题是你想要构建什么类型的应用程序以及你拥有哪些技能。如果你已经熟悉JavaScript,那么可以使用Phonegap/Cordova。如果你正在构建游戏,那么有许多使用Lua的2D和3D框架可供选择。其中一些是免费的,其他的则需要支付许可费用,但如果它提供了解决方案,那么它是值得的。所有这些框架都有优缺点。例如,我不确定是否想在游戏框架中构建RSS阅读器。Java只是另一种语言,我建议先学习Java和Android框架,并知道存在什么,然后再添加另一个应用程序特定的框架层。

谢谢。我选择它作为最佳答案,因为它让我浏览了Lua框架,我发现了Corona,它的简单性让我惊叹不已。谢谢! :) - Straightfw
因为在过去的6年中没有任何变化,我在回答中添加了一条评论。游戏几乎总是使用本地NDK编写的,并且这是完全支持的,不需要Java,还有大量其他解决方案。对于“普通”的应用程序,仍然是Java或Kotlin,但没有脚本语言。 - Lothar

3
您可以尝试使用http://scormpool.com/luastudio。它可以在您的设备上包括iOS、Android、Mac和Win上开发和运行代码。
Exporter可以帮助您在上述平台上制作独立应用程序。

3

Corona SDK 允许你使用 Lua 编写 iOS 和 Android 应用程序。它非常易于学习,但是它不是免费的。

编辑:我看到你发了一条帖子说你在发送我的帖子后找到了 Corona...


哇,看起来绝对棒极了!我希望我可以选择两个答案作为最佳 :) 非常感谢,肯定会经常用到!我已经看到很多我将要遇到的问题在里面得到了解决。然而,您是否熟悉一些更便宜的类似框架?尽管我知道你付出的是卓越的质量,但对我来说支付150美元(假设我获得学生许可证)还是有点贵。 - Straightfw
使用Corona,您可以免费开发和测试应用程序。只有在您想要发布它们时才需要支付许可证费用。此时,如果您的应用程序和营销做得好,您可以赚回成本。另一个选择是http://www.giderosmobile.com,它有一个免费的程序,但会在您的应用程序上留下一个闪屏。 - amirfl
我在谈论Corona :) 当我安装它时,它会显示我还有30天的试用期。关于在购买许可证之前运行营销的问题也是关于Corona的。 - Straightfw
我猜这个情况可能自从我使用 Corona 的试用版以来就有所改变了。不管怎样,我仍然会推荐他们。在那时,你可以免费使用 Corona 开发你的应用程序,一旦你决定发布它,你就需要订阅。营销与开发平台本身关系不大,因此在开发之前开始营销过程并没有什么问题。 - amirfl
我明白了。不过,我认为营销确实与SDK有关。也就是说,如果我使用SDK开发游戏,然后放置一个广告展示这个游戏的特点(使用SDK开发),或者展示一些游戏玩法并宣布发布日期,那么我实际上正在宣传我还没有获得授权的东西。当然,游戏是由我开发的,但是免费试用让我可以任意宣传我所创建的内容,唯一的限制就是在付款之前不能发布。 - Straightfw
显示剩余2条评论

0

这对于楼主可能没有用处,但对于其他有兴趣使用lua编写应用程序的人,我想分享我的想法。所以回答问题:

是的,你可以使用LuaJava从开普勒项目中仅使用lua编写android应用程序(尽管我不认为它还在维护)。您可以轻松创建和操作Java对象,并通过lua与Android API交互。您甚至可以仅使用lua动态创建UI元素。但是,需要一小部分java引导代码才能从您的应用程序启动lua VM。 {{link1:AndroLua}}项目是开始使用Android的好地方。创建者已经做了很多工作,使lua与Android配合使用,并将其打包到一个应用程序中。从经验上讲,我可以说它非常好用! 但是,我绝不会推荐给初学者,因为这需要对java和lua有很多知识才能使事情正常运行,这意味着更多的工作而不是更少的工作。

对于AndroLua,只需克隆repo并将其用作自己应用程序的基础即可。上次我使用它时,我只是将其导入到android-studio中,在解决了自己设置的一些问题后,就可以在我的设备上编译和运行了。


0

如果只使用纯Lua,那么答案是否定的...除非你想使用很多库。

如果你想制作一些小型的Android应用或游戏,那么可以使用游戏引擎,学习是一个逐步的过程,不要直接跳入难点。


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