使用 Gradle
Idea 和 Vscode 均采用 Gradle 作为构建系统。本文旨在详细介绍 M8Test Gradle 的相关内容。
项目模板结构
M8Test 项目依据开发语言的不同,采用了两种不同的模板结构:
JVM 语言项目(Groovy、Java、Kotlin、Ruby)
非 JVM 语言项目(JavaScript、Lua、PHP、Python)
下面将分别介绍这两种模板结构的具体内容。
JVM 语言项目模板结构
JVM 语言(Groovy、Java、Kotlin、Ruby)脚本项目的模板结构如下:
在实际开发过程中,你需要:
在
language/src/main/language
目录下编写脚本代码(其中language
会替换为具体的语言名称)如果需要使用资源文件(如图片、配置文件等),可将其存放在
language/src/main/resources
目录下
非 JVM 语言项目模板结构
非 JVM 语言(JavaScript、Lua、PHP、Python)脚本项目的模板结构如下:
在实际开发过程中,你需要:
在
language/src
目录下编写脚本代码(其中language
会替换为具体的语言名称)如果需要使用资源文件(如图片、配置文件等),可将其存放在
language/res
目录下
任务和任务组
Gradle 作为一款强大的构建工具,在软件开发中扮演着至关重要的角色,而任务和任务组则是其核心概念。
任务
任务是 Gradle 中最基本的操作单元,每个任务都有明确的名称和描述,用于定义特定的操作,如运行项目、打包 APK 等。任务之间可以相互依赖,通过指定依赖关系,能够确保任务按照正确的顺序执行。例如,"runJavascript" 任务依赖于 " buildJavascript" 任务,只有先完成项目构建,才能运行项目。现阶段,您只需对这些概念有一个大致的了解即可。
任务组
任务组是根据任务的功能或类型对任务进行分类的一种方式。例如,构建相关的任务可以归类到 "m8test-build" 组,下载相关的任务可以归类到 "m8test-download" 组。这种分类方式使得我们在构建项目时,能够更加直观地选择和执行所需的任务,从而提高项目构建的效率和可维护性。
任务和任务组图示
运行任务
Gradle 任务的运行方式多种多样,您可以选择自己喜欢的方式来执行任务。
通过命令行工具
您可以使用命令行工具来运行 Gradle 任务。例如,执行 "./gradlew buildJavascript" 命令会触发与构建相关的多个任务,包括 " copyJavascriptSrc"、"copyJavascriptInit" 等。
通过 Gradle 面板
您还可以直接在 Gradle 面板中双击任务名来执行任务。
其他方式
在 IntelliJ IDEA 中,您可以通过双击 "Ctrl" 键,然后在弹出的输入框中输入 "gradle buildJavascript" ,最后按下回车键来执行任务。

使用 Gradle 模板
通过 Idea 或 vscode 创建项目后即可使用,步骤如下:
配置 build.gradle.kts 文件
在创建好的模板项目中,与编程语言同名的文件夹内有一个 build.gradle.kts
文件,用于配置项目。

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

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

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

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

生成代码提示文件
在 Gradle 面板中,找到 M8Test
相关任务,进入 m8test-code-completion
任务组。
非 JVM 项目:
generateXXXAllCompletionCodeFiles
(XXX 为语言名,如 Javascript、Lua、Php、Python)任务可一次性生成所有代码提示文件,包括 Android API、M8Test API、组件 API 和全局变量等。其他任务可分别生成不同类型的提示文件。

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

若 build.gradle.kts
文件中引用的组件发生变化(增加或减少),可能需要重新生成代码提示文件。
配置语言环境
非 JVM 项目推荐使用 vscode ,JVM 项目推荐使用 Idea ,这样可开箱即用。除 Ruby 语言外,均无需额外配置环境。以下介绍在 Idea 中配置 Ruby 环境的步骤:
Ruby 环境配置
若项目未配置 Ruby 解析器,会出现提示,此时点击 configure
。

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

选择 interpreter
。

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

成功添加 JRuby SDK 后,点击 apply
。

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

点击 apply
。

点击添加按钮。

选择 JRuby
。

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

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

若出现 require
提示 No such file to load
:

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

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

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

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

日志服务连接成功后,可将设备端日志同步到电脑端。
编写代码
JVM 项目:
在
项目根目录/语言名/src/main/语言名
目录下编写脚本代码。在
项目根目录/语言名/src/main/resources
目录下存放资源文件(如图片)。

非 JVM 项目:
在
项目根目录/语言名/src
目录下编写脚本代码。在
项目根目录/语言名/res
目录下存放资源文件(如图片)。

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

buildXXXApk
:将 XXX 语言项目打包成安卓 APK 文件。runXXXApk
:将 XXX 语言项目运行到安卓设备上。