haikejishu
V2EX  ›  Lua

用 Lua 写 Android 应用? AutoLua 做到了

  •  
  •   haikejishu · 1 day ago · 1853 views

    做了个小工具,技术栈 LuaJava + Lua 5.3 。核心思路是把完整 Lua 运行时和 Android API 桥接,让脚本能直接调原生能力。

    技术层面几个点

    • Lua 5.3 完整运行时,不是阉割版、不是类 Basic 语法。Goto 、协程、位运算全有
    • import "android.graphics.Bitmap" 原生调用,零中间层。想调什么调什么,不等封装、不等更新
    • .alp 压缩工程格式,透明不加密,脚本归属权是用户自己的。随时导出、分享、备份
    • 内置 AES/RSA/MD5/Base64 加解密,网络请求、多线程全支持

    一段代码说清楚

    -- import 直接用,零封装
    import "android.widget.*"
    import "android.content.Intent"
    import "android.net.Uri"
    
    -- 布局表构建 UI ,不是拖控件
    layout = {
        LinearLayout,
        orientation = "vertical",
        { Button, text = "点我", id = "btn" },
    }
    activity.setContentView(LoadLayout(layout))
    
    -- 事件绑定 — getter/setter 简写
    btn.onClick = function(v)
        print("clicked")
        -- 直接调系统 API
        local intent = Intent(Intent.ACTION_VIEW)
        intent.setData(Uri.parse("https://www.autolua.top"))
        activity.startActivity(intent)
    end
    
    

    对比同类工具

    AutoLua 按键精灵 Tasker Auto.js
    语言 Lua 5.3 完整 类 Basic 可视化 JavaScript
    调 Java API import 直接用 不支持 有限 有限
    UI 构建 代码自由画 录制/模板 模板 模板

    自由度不在一个维度。 Lua 不只是脚本语言,加 LuaJava 桥接后它成了 Android 的一等公民。

    文档

    欢迎搞机玩家和技术同好来玩。

    11 replies    2026-06-20 04:30:40 +08:00
    uqf0663
        1
    uqf0663  
       1 day ago via Android
    参考下 autojs 原作者被喝茶后跑路的事件,建议 op 注意黑产防范注意安全
    xwhxbg
        2
    xwhxbg  
       1 day ago
    有点意思,也许可以拿来做魔兽伴侣,让 lua 直接渲染到 apk 里
    xuhuanzy
        3
    xuhuanzy  
       1 day ago
    建议给 lua 上这个强类型提示 https://github.com/EmmyLuaLs/emmylua-analyzer-rust
    我是主开发者, 有问题可以提
    w568w
        4
    w568w  
       1 day ago   ❤️ 1
    > 用 Lua 写 Android 应用? AutoLua 做到了

    了解下 AndroLua 这个项目。快 10 年了,Android 4.0 时就存在了。

    > Lua 5.3 完整运行时

    可是现在 Lua 最新版是 5.5 啊,而且 5.5 也已经是半年多( 2025-12 )前发布的了。

    > Lua 不只是 [...],它成了 [...]。

    当务之急是学会自己写文章,而不是用 AI 写文案然后复制粘贴。

    如果文案都懒得写,我就要怀疑项目是不是纯 Vibe coding ,以及代码质量是不是 AI 写完自己都懒得看一眼了。

    > Auto.js 、Tasker 有限

    据我所知,这两个都是可以完整调用所有 Java API 的吧。什么叫做他们「有限」,而 AutoLua 「 import 直接用」?这里的区别在哪?
    aa51513
        5
    aa51513  
       1 day ago via Android
    4 楼是大佬
    haikejishu
        6
    haikejishu  
    OP
       1 day ago
    @w568w 说实话感谢花时间写这么长,四点都认真看了,逐一回复:

    1. AndroLua 确实值得学习,不过原版已经不更了,AutoLua 是目前活跃状态。
    2. 选 5.3 不是追不上,是没找到升级的理由——功能够用、生态适配也都在 5.3 ,升不升级对开发者来说不难,但目前确实没必要。
    3. AI 只是个工具,润色文案跟我用 IDE 自动补全没区别。代码能跑、逻辑是对的,为什么不能用?
    4. "有限"是我表述不准确,已修正。Auto.js 和 Tasker 都能调 Java API ,区别在引擎和桥接效率,不在能不能。
    haikejishu
        7
    haikejishu  
    OP
       1 day ago
    @xuhuanzy 感谢,目前还在开发其他核心功能,后续空闲时可增加这个提示
    haikejishu
        8
    haikejishu  
    OP
       1 day ago
    @uqf0663 感谢提醒,这个我会注意的
    w568w
        9
    w568w  
       1 day ago   ❤️ 1
    @haikejishu

    > AI 只是个工具,润色文案跟我用 IDE 自动补全没区别

    区别在于 IDE 是确定性的,AI 不是。

    另外我实在没看出来这个哪里是润色了,只会让人看到第一眼就认出是「 AI 泔水文案」然后直接退出页面……

    AI 写文案的问题并不是说我「反感 AI 」,而是它经常会做出一些言过其实的夸张比喻、不符合人类直觉的伪人论述。

    比如什么「零中间层。想调什么调什么」,我个人感觉就是:AI 非常刻意地想营造出一种虚伪亲切的营销和吹捧语气。因为任何做过开发的都知道,两个语言交互(哪怕是 C 和 C++)都肯定得有中间层做 bridge ,怎么可能「零中间层」呢?这是违反工程常识的,做过这方面开发的,一眼看就会觉得「这个人是不是根本不懂 FFI ?」。

    还有「自由度不在一个维度」也是。正常人并不会这么说话,就算要吹自己的项目,也有更精确的方式(因为你了解自己写的项目),而不是泛泛拿一些特别大的 technobabble 来描绘一种虚幻的哲学层面愿景……

    > 不是追不上,是没找到升级的理由
    > 生态适配也都在 5.3

    这是从哪里得出的结论?

    > 区别在引擎和桥接效率

    Talk is cheap, show me the number.
    haikejishu
        10
    haikejishu  
    OP
       23h 36m ago
    @w568w
    1. 生态适配这块是我的技术积累和存量用户,简单说目前够用,这不是一个追求最新技术的产品。
    2. 引擎和效率这块,我就说过一句有区别。引擎决定你用 Lua 还是其他语言开发,一眼能看出来。效率我没跑过对比测试,不乱下结论,但是 C 层的东西不会慢。
    SP00F
        11
    SP00F  
       10h 21m ago
    自动化目前最优解是外置 😂
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2494 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 06:51 · PVG 14:51 · LAX 23:51 · JFK 02:51
    ♥ Do have faith in what you're doing.