M8Test Help

使用 Gradle

IdeaVscode 均采用 Gradle 作为构建系统。本文旨在详细介绍 M8Test Gradle 的相关内容。

项目模板结构

M8Test 项目依据开发语言的不同,采用了两种不同的模板结构:

  • JVM 语言项目(Groovy、Java、Kotlin、Ruby)

  • 非 JVM 语言项目(JavaScript、Lua、PHP、Python)

下面将分别介绍这两种模板结构的具体内容。

JVM 语言项目模板结构

JVM 语言(Groovy、Java、Kotlin、Ruby)脚本项目的模板结构如下:

m8test-project/ ├── gradlew # Wrapper 脚本(Linux/macOS) ├── gradlew.bat # Wrapper 脚本(Windows) ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar # Wrapper 可执行 JAR │ └── gradle-wrapper.properties # Wrapper 配置文件(指定版本等信息) ├── build.gradle.kts # 根构建脚本(可选,常用于统一配置和插件版本) ├── settings.gradle.kts # 子项目配置文件 ├── gradle.properties # 构建属性配置 ├── language/ # M8Test 语言目录(可替换为 groovy、java、kotlin、ruby) │ ├── init/ # M8Test 初始化脚本 │ ├── src/ # M8Test 源码目录 │ │ └── main/ │ │ ├── language/ # M8Test 源码根目录(语言特定目录) │ │ └── resources/ # M8Test 资源目录(如图片、配置文件等) │ ├── webview/ # M8Test 静态网站文件(用于展示 UI) │ └── build.gradle.kts # M8Test 项目配置文件 └── README.md # 项目开发文档

在实际开发过程中,你需要:

  • language/src/main/language 目录下编写脚本代码(其中 language 会替换为具体的语言名称)

  • 如果需要使用资源文件(如图片、配置文件等),可将其存放在 language/src/main/resources 目录下

非 JVM 语言项目模板结构

非 JVM 语言(JavaScript、Lua、PHP、Python)脚本项目的模板结构如下:

m8test-project/ ├── gradlew # Wrapper 脚本(Linux/macOS) ├── gradlew.bat # Wrapper 脚本(Windows) ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar # Wrapper 可执行 JAR │ └── gradle-wrapper.properties # Wrapper 配置文件(指定版本等信息) ├── build.gradle.kts # 根构建脚本(可选,常用于统一配置和插件版本) ├── settings.gradle.kts # 子项目配置文件 ├── gradle.properties # 构建属性配置 ├── language/ # M8Test 语言目录(可替换为 javascript、lua、php、python) │ ├── init/ # M8Test 初始化脚本 │ ├── res/ # M8Test 资源目录(如图片、配置文件等) │ ├── src/ # M8Test 源码根目录 │ ├── webview/ # M8Test 静态网站文件(用于展示 UI) │ └── build.gradle.kts # M8Test 项目配置文件 └── README.md # 项目开发文档

在实际开发过程中,你需要:

  • language/src 目录下编写脚本代码(其中 language 会替换为具体的语言名称)

  • 如果需要使用资源文件(如图片、配置文件等),可将其存放在 language/res 目录下

任务和任务组

Gradle 作为一款强大的构建工具,在软件开发中扮演着至关重要的角色,而任务和任务组则是其核心概念。

任务

任务是 Gradle 中最基本的操作单元,每个任务都有明确的名称和描述,用于定义特定的操作,如运行项目、打包 APK 等。任务之间可以相互依赖,通过指定依赖关系,能够确保任务按照正确的顺序执行。例如,"runJavascript" 任务依赖于 " buildJavascript" 任务,只有先完成项目构建,才能运行项目。现阶段,您只需对这些概念有一个大致的了解即可。

任务组

任务组是根据任务的功能或类型对任务进行分类的一种方式。例如,构建相关的任务可以归类到 "m8test-build" 组,下载相关的任务可以归类到 "m8test-download" 组。这种分类方式使得我们在构建项目时,能够更加直观地选择和执行所需的任务,从而提高项目构建的效率和可维护性。

任务和任务组图示

任务示意图
任务组示意图

运行任务

Gradle 任务的运行方式多种多样,您可以选择自己喜欢的方式来执行任务。

通过命令行工具

您可以使用命令行工具来运行 Gradle 任务。例如,执行 "./gradlew buildJavascript" 命令会触发与构建相关的多个任务,包括 " copyJavascriptSrc"、"copyJavascriptInit" 等。

命令行执行任务示例1
命令行执行任务示例2

通过 Gradle 面板

您还可以直接在 Gradle 面板中双击任务名来执行任务。

Gradle面板执行任务示例1
Gradle面板执行任务示例2

其他方式

IntelliJ IDEA 中,您可以通过双击 "Ctrl" 键,然后在弹出的输入框中输入 "gradle buildJavascript" ,最后按下回车键来执行任务。

IntelliJ IDEA执行任务示例

使用 Gradle 模板

通过 Ideavscode 创建项目后即可使用,步骤如下:

配置 build.gradle.kts 文件

在创建好的模板项目中,与编程语言同名的文件夹内有一个 build.gradle.kts 文件,用于配置项目。

255

通常需要修改调试设备信息,可通过 adbDeviceSerial 配置,或结合 deviceIpadbPort 配置。若配置了 adbDeviceSerial ,则 deviceIpadbPort 将被忽略。

256

修改入口文件、包名、logo 等。

257

如需增减项目中使用的组件,添加组件时,添加 requireComponent 代码块并修改组件信息;删除组件时,删除或注释对应的 requireComponent 代码块。

258

对于非 JVM 项目,还可配置为哪些 Java 类生成代码提示文件。生成过多提示文件可能影响性能,但若没有提示文件,将影响开发效率。可通过增减 filterClass 条件来控制生成范围。

259

生成代码提示文件

在 Gradle 面板中,找到 M8Test 相关任务,进入 m8test-code-completion 任务组。

  • 非 JVM 项目:

    • generateXXXAllCompletionCodeFiles (XXX 为语言名,如 Javascript、Lua、Php、Python)任务可一次性生成所有代码提示文件,包括 Android API、M8Test API、组件 API 和全局变量等。

    • 其他任务可分别生成不同类型的提示文件。

260
  • JVM 项目:

    • 由于可直接使用 JAR 提供代码提示,只需执行生成全局变量的任务(如 generateXXXGlobalVariables ,XXX 为语言名,如 Groovy、Java、Kotlin、Ruby)。

261

build.gradle.kts 文件中引用的组件发生变化(增加或减少),可能需要重新生成代码提示文件。

配置语言环境

非 JVM 项目推荐使用 vscode ,JVM 项目推荐使用 Idea ,这样可开箱即用。除 Ruby 语言外,均无需额外配置环境。以下介绍在 Idea 中配置 Ruby 环境的步骤:

Ruby 环境配置

若项目未配置 Ruby 解析器,会出现提示,此时点击 configure

262

依次点击 Project > Sdk 右边的输入框 > Add Sdk > JRuby Sdk

263

选择 interpreter

264

找到 jruby.exe 的路径后点击 Ok ,集成开发环境中的路径通常为 C:\Users\Your username\.m8test\bin\jruby\jruby.exe

265

成功添加 JRuby SDK 后,点击 apply

266

依次点击 Modules > ruby > main > Module Sdk 右边的输入框 > 选择 JRuby SDK。

267

点击 apply

268

点击添加按钮。

269

选择 JRuby

270

确认 JRuby 添加成功后,点击 apply > Ok

271

此时应不再显示需要配置 Ruby 解析器的提示。

272

若出现 require 提示 No such file to load

273

Project 视图中,右键点击 ruby/src/main/ruby 目录,选择 Mark Directory as > Load Path Root

274

稍等片刻, require 应恢复正常。

275

连接日志服务

  • Idea 中,按快捷键 Alt + T ,依次选择 M8Test > 连接日志服务

232
  • vscode 中,按快捷键 Ctrl + Shift + P ,输入 M8Test ,选择 连接日志服务

233

日志服务连接成功后,可将设备端日志同步到电脑端。

编写代码

  • JVM 项目:

    • 项目根目录/语言名/src/main/语言名 目录下编写脚本代码。

    • 项目根目录/语言名/src/main/resources 目录下存放资源文件(如图片)。

276
  • 非 JVM 项目:

    • 项目根目录/语言名/src 目录下编写脚本代码。

    • 项目根目录/语言名/res 目录下存放资源文件(如图片)。

277

运行/打包项目

编写完代码后,可通过运行 Gradle 任务执行相应操作。构建相关任务可在 m8test-build 任务组中查看。

278
  • buildXXXApk :将 XXX 语言项目打包成安卓 APK 文件。

  • runXXXApk :将 XXX 语言项目运行到安卓设备上。

Last modified: 12 June 2025