使用 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 语言项目运行到安卓设备上。