使用 Android Lua Helper 在VSCODE中调试安卓Lua应用

news/2024/9/21 4:38:51/文章来源:https://www.cnblogs.com/flying_bat/p/18399955

一、VSCODE 与 Android Lua Helper 的功能特点

Visual Studio Code(VSCODE)是一款功能强大的代码编辑器,它以其高度可定制的界面、强大的扩展生态系统、流畅的性能表现以及对众多编程语言的天然支持而备受开发者青睐。在众多的开发场景中,VSCODE 都展现出了卓越的性能和灵活性。
Lua 作为一种轻量级的脚本语言,在游戏开发、移动应用开发等领域有着广泛的应用。然而,由于 Lua 是一门小众语言,相关的开发工具并不像主流语言那样完善。Android Lua Helper 插件的出现,为开发者提供了一系列强大的功能,极大地提高了 Lua 代码的开发效率和质量。
Android Lua Helper 插件具有多种功能,如符号定义跳转、代码格式化、符号查找、全局引用查找以及智能代码补全、语法错误检测、Lua 代码片段提示等。这些功能使得开发者在编写 Lua 代码时更加高效和准确。例如,代码补全功能可以大大减少开发者的输入时间,提高开发速度;语法错误检测功能可以帮助开发者及时发现并修复代码中的错误,避免在运行时出现问题。Android Lua Helper插件还拥有低内存消耗和高实时性的优点,即便面对规模庞大的项目,也能流畅运行,毫无卡顿之感。
此外,Android Lua Helper 插件还支持多种 Lua 版本,如 Lua 5.1Lua 5.3,满足了不同项目的需求。插件的不断更新和改进也为开发者提供了更好的开发体验。Android Lua Helper 支持使用安卓 ADB 工具连接手机,实现远程调试,安装卸载应用,截屏到本地,启动scrcpy等。
总之,VSCODEAndroid Lua Helper 的结合为 Android 开发中的 Lua 语言项目提供了强大的支持,使得开发者能够更加高效地进行开发工作。

二、VSCODE 与 Android Lua Helper 的集成

首先,我们需要安装 VSCODE,然后安装 Android Lua Helper 插件。
点击此链接直接在VSCODE中安装,或在 VSCODE 的软件商店安装 Android Lua Helper 插件极为简便。首先打开 VSCODE,目光聚焦于侧边栏底部,那里有一个扩展商店入口图标,形似方块。轻轻点击此图标,便会开启一个全新视图,其中罗列着众多插件。接着,在搜索栏中输入 Android Lua Helper 并按下回车键。随后,在搜索结果里找到 Android Lua Helper 插件,点击 “安装” 按钮。待安装完成,再点击 “重新加载” 按钮以启用该插件。
插件安装完成后,我们需要配置 VSCODE,以支持 Android Lua Helper 的调试。

三、调试配置全流程

(一)创建 launch.json 文件

在安装好 Android Lua Helper 插件后,点击运行按钮,接着点击创建 launch.json,选择调试器时,我们要选择 AndroidLuaHelper:Debug。这个过程就像是为我们的调试之旅搭建起了一座桥梁。它为后续的调试工作提供了基础的配置框架,确保我们能够顺利地进行 Lua 代码的调试。 1
launch.json 文件中,我们添加了如下内容:4

  • "connectionPort" 字段用于指定调试端口,默认为 8818
  • stopOnEntry 字段尤为关键。通过将其置为 false,可以避免在程序入口处进行断点,使得调试过程更加流畅。例如,在一些复杂的项目中,如果 stopOnEntrytrue,可能会导致调试过程一开始就被中断,难以快速定位到实际的问题点。通过将其置为 false,我们可以更加灵活地控制调试的起点,提高调试效率。
  • enableRemotePath 字段用于是否启用远程路径,默认为 true
  • remotePath 字段用于指定远程路径,默认为 /sdcard/Download/script.zip。会把本地的工程文件打包成zip包,上传到手机的此目录。APP需要加载此目录的脚本来进行解压,然后运行和调试。

(二)添加LuaPanda.lua文件到项目中

按快捷键Ctrl+Shift+P,输入AndroidLuaHelper:Copy Debug file,再按回车键。
选择合适的项目目录后LuaPanda.lua文件会自动复制到目录下,并命名为 LuaPanda.lua
2

(三)插入调试代码到合适的文件

在合适的文件(如:main.lua)中,按快捷键Ctrl+Shift+P,输入AndroidLuaHelper:Insert Debugger Code,再按回车键。
插入如下代码:
3
默认端口为 8818,与 launch.json 文件中的"connectionPort"要一致。

(四)连接到安卓手机

Android Lua Helper 会自动检测手机,如果检测不到,则需要手动输入。
点击边栏上的安卓按钮,接着点击 Input Device IP Address按钮,或按快捷键Ctrl+Shift+P,输入AndroidLuaHelper:Input Device IP Address,再按回车键,依次输入IP地址和端口号。
5

(五)运行

在需要的位置点入断点,点击运行按钮,选择启动调试,调试器会进入监听模式,在手机上运行App即可进行调试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/792978.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【git】No user exists for uid 1000 fatal: 无法读取远程仓库。

一、问题今天拉取代码时,突然报错 二、处理过程 1、检查用户信息 $ id -u1000用户的id是对的 那是因为什么呢2、重启终端 发现还是不行3、重启电脑 发现还是不行三、解决方案 最终重新生效环境变量 $ source ~/.bashrc然后重新执行拉取更新 $ git fetchremote: Enumerating ob…

最罕见的性格,在程序员里却最常见?它就是。。

当然,性格测试也不绝对准确,毕竟谁还没有一点儿 “逆反” 心理呢?大家好,我是程序员鱼皮。不知道大家有没有了解过 MBTI?这是目前特别流行的人格测试,可以帮助你更了解自己。 MBTI 将人格分为 4 个维度,每个维度有 2 个选项:比如在精力来源这点,就分为内倾和外倾(俗称…

etcd集群新增节点和移除节点

etcd集群新增节点和删除节点 现在的集群信息是: 新增节点1、下载etcd二进制包wget https://github.com/etcd-io/etcd/releases/download/v3.5.15/etcd-v3.5.15-linux-amd64.tar.gz2、创建etcd目录mkdir -p /data/etcd/{data,ssl,bin}3、解压并移动etcd命令至etcd目录tar zxf …

My SQL 列转行操作

原表结构如下,我们可以发现,“日运输量”和“车次”是在同一张表中相互独立的两个字段,即独立的两列数据,下面,我将系统中的测试数据以及代码全部放出来,以解释列转行的操作方法 原表数据库查询代码:1 SELECT 2 yzrq AS 运作日期, 3 DATE_FORMAT( yzrq, %Y-%m )…

VS中 调试逐语句和逐过程的区别

逐过程(F10)在遇到函数时,会把函数从整体上看做一条语句,不会进入函数内部;逐语句(F11)在遇到函数时,认为函数由多条语句构成,会进入函数内部。

使用 nuxi init 创建全新 Nuxt 项目

title: 使用 nuxi init 创建全新 Nuxt 项目 date: 2024/9/6 updated: 2024/9/6 author: cmdragon excerpt: 摘要:本文介绍了如何使用nuxi init命令创建全新的Nuxt.js项目,包括安装所需环境、命令使用方法、指定模板、强制克隆、启动开发服务器等步骤,并提供了完整的项目初…

KUnit:设备模拟重定向

设备模拟 有些驱动文件是需要device的,所以KUnit提供了一些设备模拟的方法,并且还提供了总线来管理设备的生命周期。 下面先以clock device模拟举例(drivers/clk/clk_test.c)首先用一个struct来模拟这个clk设备。其中clk_hw是clk的描述,rate相当于模拟设备的波特率寄存器s…

IDA 动态调试初步学习

题目 https://files.buuoj.cn/files/985826f5dda0d8665ed997a49321dd88/attachment.zip 1C这个值太小导致加密失败,所以考虑动态调试修改1C为更大的值选择调试F2下一些断点找到1C在内存中的位置F9开始调试先F7单步,观察右下角的Stack view,内存中出现1C先选中,然后按F2,然后修改…

JavaScript 中 structuredClone 和 JSON.parse(JSON.stringify()) 克隆对象的区别

JavaScript 中 structuredClone 和 JSON.parse(JSON.stringify()) 克隆对象的区别JavaScript 中 structuredClone 和 JSON.parse(JSON.stringify()) 克隆对象的异同点 一、什么是 structuredClone? 1. structuredClone 的发展 structuredClone 是在 ECMAScript 2021(ES12)标…

【c】printf()中%占位符的选取和使用: %d, %s等

格式占位符速通 格式占位符 %格式占位符 % 是在 C/C++ 语言中格式输入函数,如 scanf、printf 等函数中使用。 其意义就是起到格式占位的意思,表示在该位置有输入或者输出。规定符%d 十进制有符号整数 %u 十进制无符号整数 %f 浮点数 %s 字符串 %c 单个字符 %p 指针的值 %e 指…

kingbase——创建truncate函数

写上一篇比较round函数与truncate函数时,顺手试了一下KINGBASE数据库,应该是没有TRUNCATE这个函数,要使用估计得手动创建。创建函数如下 create or replace function sys.truncate(numeric,int4) returns numeric as declarevalue numeric;result numeric; beginvalue := l…

LeetCode Hot100刷题记录-21. 合并两个有序链表

题目描述:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。需要知道的pre-knowledge: list1和list2起初可直接代表两个链表的头节点,无需用另外的变量比如 current 来表示头节点。 思路:准备一个虚拟节点,指向合并完成新链…