From 9464acf61668aeb2cf410c34eeddff608b149be8 Mon Sep 17 00:00:00 2001 From: zayn7lie Date: Tue, 30 May 2023 13:01:31 +0800 Subject: [PATCH 1/6] docs: add docs & emulator support for linux users --- docs/1.5-Linux模拟器支持.md | 156 ++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 docs/1.5-Linux模拟器支持.md diff --git a/docs/1.5-Linux模拟器支持.md b/docs/1.5-Linux模拟器支持.md new file mode 100644 index 0000000000..144d13b616 --- /dev/null +++ b/docs/1.5-Linux模拟器支持.md @@ -0,0 +1,156 @@ +# Linux模拟器支持 + +## 准备工作 + +- 在[MAA官网](https://maa.plus/)下载Linux动态库并解压 +- 进入`./MAA-v{版本号}-linux-x{框架}/Python/`目录下打开`sample.py`文件 +- 找到`# 请自行配置 adb 环境变量,或修改为 adb 可执行程序的路径`一栏根据系统情况填写 + - 如果模拟器使用`avd`自带`adb`,可以直接在`adb.exe`一栏填写`adb`路径(一般在`~/Android/Sdk/platform-tools/`里面可以找到,例如`if asst.connect("/home/user1/Android/Sdk/platform-tools/adb", "模拟器的adb地址"):`) + - 如果使用其他模拟器须先下载`adb`:`sudo apt install adb`后填写路径或全局变量直接写`"adb"`即可 + - adb地址的获取:可以直接使用adb工具:`adb路径 devices` + - 例如`/home/user1/Android/Sdk/platform-tools/adb devices` + - 返回两行 + - `List of devices attached` + - `emulator-5555 device` + - `emulator-5555`就是模拟器的adb地址,填入`127.0.0.1:5555`,如`if asst.connect("/home/user1/Android/Sdk/platform-tools/adb", "emulator-5555"):` +- 这时候可以测试下,`$ python3 sample.py`,如果返回`连接成功`则基本完成了 +- 移动到下面`# 任务及参数请参考 docs/集成文档.md`一栏根据需要和`3.x集成文档`部分修改 +- 这里给出示范样例 + +```python3 +import json +import pathlib +import time + +from asst.asst import Asst +from asst.utils import Message, Version, InstanceOptionType +from asst.updater import Updater +from asst.emulator import Bluestacks + + +@Asst.CallBackType +def my_callback(msg, details, arg): + m = Message(msg) + d = json.loads(details.decode("utf-8")) + + print(m, d, arg) +def infrast(mode=0, plan_index="主班", filename="/home/user1/snap/MAA/自定义基建.json"): + asst.append_task("Infrast", { + "mode": mode, + "facility": [ + "Mfg", "Trade", "Control", "Power", "Reception", "Office", "Dorm" + ], + "drones": "Money", + "filename": filename, + "plan_index": plan_index + }) +def visit(): + asst.append_task("Visit") +def mall(): + asst.append_task("Mall", { + "shopping": True, + "buy_first": ["赤金", "招聘许可", "龙门币", "固源岩"], + "blacklist": ["家具", "碳", "碳素", "碳素组", "加急许可"], + }) +def recruit(): + asst.append_task("Recruit", { + "refresh": True, + "select": [4, 5], + "confirm": [4, 5], + "times": 4 + }) +def fight(stage='', medicine=0): + asst.append_task("Fight", { + "stage": stage, + "medicine": medicine, + "report_to_penguin": True, + # "penguin_id": "1234567" + }) +def roguelike(theme="Mizuki", squad="以人为本", roles="取长补短", core_char="百炼嘉维尔"): + asst.append_task("Roguelike", { + "theme": theme, # Phantom + "squad": squad, + "roles": roles, + "core_char": core_char, + }) +def award(): + asst.append_task("Award") +def copilot(): + asst.append_task("Copilot", { + "filename": "./GA-EX8-raid.json", + "formation": False + }) + +def tasks(): + infrast(mode=10000, plan_index="主班") + #visit() + #mall() + recruit() + #fight(medicine=0, stage="1-7") # stage="1-7", if null then return previous stage. + #roguelike() # theme="Mizuki", squad="以人为本", roles="取长补短", core_char="百炼嘉维尔" + #award() + + #copilot() + +if __name__ == "__main__": + + # 请设置为存放 dll 文件及资源的路径 + path = pathlib.Path(__file__).parent.parent + + # 设置更新器的路径和目标版本并更新 + #Updater(path, Version.Stable).update() + + # 外服需要再额外传入增量资源路径,例如 + # incremental_path=path / "resource" / "global" / "YoStarEN" + Asst.load(path=path) + + # 若需要获取详细执行信息,请传入 callback 参数 + # 例如 asst = Asst(callback=my_callback) + asst = Asst() + + # 设置额外配置 + # 触控方案配置 + asst.set_instance_option(InstanceOptionType.touch_type, "maatouch") + # 暂停下干员 + # asst.set_instance_option(InstanceOptionType.deployment_with_pause, "1") + + # 启动模拟器。例如启动蓝叠模拟器的多开Pie64_1,并等待30s + # Bluestacks.launch_emulator_win(r"C:\Program Files\BlueStacks_nxt\HD-Player.exe", 30, "Pie64_1") + + # 获取Hyper-v蓝叠的adb port + # port = Bluestacks.get_hyperv_port(r"C:\ProgramData\BlueStacks_nxt\bluestacks.conf", "Pie64_1") + + # 请自行配置 adb 环境变量,或修改为 adb 可执行程序的路径 + if asst.connect("/home/user1/Android/Sdk/platform-tools/adb", "emulator-5554"): + print("连接成功") + else: + print("连接失败") + exit() + + # 任务及参数请参考 docs/集成文档.md + + asst.append_task("StartUp") + + tasks() + + #asst.append_task("Custom", {"task_names": ["AwardBegin"]}) + + asst.start() + + while asst.running(): + time.sleep(0) +``` + +以上样例我只需要根据需求在`task()`函数内进行修改即可 + +## 模拟器支持 + +### ✅ [AVD](https://developer.android.com/studio/run/managing-avds) + +- 必选配置:16:9的屏幕分辨率,且分辨率需大于720p +- 推荐配置:x86_64的框架(R - 30 - x86_64 Android 11.0)配合MAA的linux x64动态库 + +### ⚠️ [Genymotion](https://www.genymotion.com/) + +- 高版本安卓自带x86_64框架,轻量但是明日方舟易闪退 +- 暂未严格测试,adb功能和路径获取没有问题 From ce06275fb7cb88aecd3e93b25207150feea6798c Mon Sep 17 00:00:00 2001 From: zayn7lie Date: Tue, 30 May 2023 14:09:45 +0800 Subject: [PATCH 2/6] docs: add links to some parts --- docs/1.5-Linux模拟器支持.md | 133 +----------------------------------- 1 file changed, 3 insertions(+), 130 deletions(-) diff --git a/docs/1.5-Linux模拟器支持.md b/docs/1.5-Linux模拟器支持.md index 144d13b616..a480aba013 100644 --- a/docs/1.5-Linux模拟器支持.md +++ b/docs/1.5-Linux模拟器支持.md @@ -4,7 +4,7 @@ - 在[MAA官网](https://maa.plus/)下载Linux动态库并解压 - 进入`./MAA-v{版本号}-linux-x{框架}/Python/`目录下打开`sample.py`文件 -- 找到`# 请自行配置 adb 环境变量,或修改为 adb 可执行程序的路径`一栏根据系统情况填写 +- 配置adb:找到[if asst.connect('adb.exe', '127.0.0.1:5555'):](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L48)一栏根据系统情况填写 - 如果模拟器使用`avd`自带`adb`,可以直接在`adb.exe`一栏填写`adb`路径(一般在`~/Android/Sdk/platform-tools/`里面可以找到,例如`if asst.connect("/home/user1/Android/Sdk/platform-tools/adb", "模拟器的adb地址"):`) - 如果使用其他模拟器须先下载`adb`:`sudo apt install adb`后填写路径或全局变量直接写`"adb"`即可 - adb地址的获取:可以直接使用adb工具:`adb路径 devices` @@ -14,141 +14,14 @@ - `emulator-5555 device` - `emulator-5555`就是模拟器的adb地址,填入`127.0.0.1:5555`,如`if asst.connect("/home/user1/Android/Sdk/platform-tools/adb", "emulator-5555"):` - 这时候可以测试下,`$ python3 sample.py`,如果返回`连接成功`则基本完成了 -- 移动到下面`# 任务及参数请参考 docs/集成文档.md`一栏根据需要和`3.x集成文档`部分修改 -- 这里给出示范样例 - -```python3 -import json -import pathlib -import time - -from asst.asst import Asst -from asst.utils import Message, Version, InstanceOptionType -from asst.updater import Updater -from asst.emulator import Bluestacks - - -@Asst.CallBackType -def my_callback(msg, details, arg): - m = Message(msg) - d = json.loads(details.decode("utf-8")) - - print(m, d, arg) -def infrast(mode=0, plan_index="主班", filename="/home/user1/snap/MAA/自定义基建.json"): - asst.append_task("Infrast", { - "mode": mode, - "facility": [ - "Mfg", "Trade", "Control", "Power", "Reception", "Office", "Dorm" - ], - "drones": "Money", - "filename": filename, - "plan_index": plan_index - }) -def visit(): - asst.append_task("Visit") -def mall(): - asst.append_task("Mall", { - "shopping": True, - "buy_first": ["赤金", "招聘许可", "龙门币", "固源岩"], - "blacklist": ["家具", "碳", "碳素", "碳素组", "加急许可"], - }) -def recruit(): - asst.append_task("Recruit", { - "refresh": True, - "select": [4, 5], - "confirm": [4, 5], - "times": 4 - }) -def fight(stage='', medicine=0): - asst.append_task("Fight", { - "stage": stage, - "medicine": medicine, - "report_to_penguin": True, - # "penguin_id": "1234567" - }) -def roguelike(theme="Mizuki", squad="以人为本", roles="取长补短", core_char="百炼嘉维尔"): - asst.append_task("Roguelike", { - "theme": theme, # Phantom - "squad": squad, - "roles": roles, - "core_char": core_char, - }) -def award(): - asst.append_task("Award") -def copilot(): - asst.append_task("Copilot", { - "filename": "./GA-EX8-raid.json", - "formation": False - }) - -def tasks(): - infrast(mode=10000, plan_index="主班") - #visit() - #mall() - recruit() - #fight(medicine=0, stage="1-7") # stage="1-7", if null then return previous stage. - #roguelike() # theme="Mizuki", squad="以人为本", roles="取长补短", core_char="百炼嘉维尔" - #award() - - #copilot() - -if __name__ == "__main__": - - # 请设置为存放 dll 文件及资源的路径 - path = pathlib.Path(__file__).parent.parent - - # 设置更新器的路径和目标版本并更新 - #Updater(path, Version.Stable).update() - - # 外服需要再额外传入增量资源路径,例如 - # incremental_path=path / "resource" / "global" / "YoStarEN" - Asst.load(path=path) - - # 若需要获取详细执行信息,请传入 callback 参数 - # 例如 asst = Asst(callback=my_callback) - asst = Asst() - - # 设置额外配置 - # 触控方案配置 - asst.set_instance_option(InstanceOptionType.touch_type, "maatouch") - # 暂停下干员 - # asst.set_instance_option(InstanceOptionType.deployment_with_pause, "1") - - # 启动模拟器。例如启动蓝叠模拟器的多开Pie64_1,并等待30s - # Bluestacks.launch_emulator_win(r"C:\Program Files\BlueStacks_nxt\HD-Player.exe", 30, "Pie64_1") - - # 获取Hyper-v蓝叠的adb port - # port = Bluestacks.get_hyperv_port(r"C:\ProgramData\BlueStacks_nxt\bluestacks.conf", "Pie64_1") - - # 请自行配置 adb 环境变量,或修改为 adb 可执行程序的路径 - if asst.connect("/home/user1/Android/Sdk/platform-tools/adb", "emulator-5554"): - print("连接成功") - else: - print("连接失败") - exit() - - # 任务及参数请参考 docs/集成文档.md - - asst.append_task("StartUp") - - tasks() - - #asst.append_task("Custom", {"task_names": ["AwardBegin"]}) - - asst.start() - - while asst.running(): - time.sleep(0) -``` - -以上样例我只需要根据需求在`task()`函数内进行修改即可 +- 自定义任务:[# 任务及参数请参考 docs/集成文档.md](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54)一栏根据需要和[3.x集成文档](https://maa.plus/docs/3.1-%E9%9B%86%E6%88%90%E6%96%87%E6%A1%A3.html)部分修改 ## 模拟器支持 ### ✅ [AVD](https://developer.android.com/studio/run/managing-avds) - 必选配置:16:9的屏幕分辨率,且分辨率需大于720p -- 推荐配置:x86_64的框架(R - 30 - x86_64 Android 11.0)配合MAA的linux x64动态库 +- 推荐配置:x86_64的框架(R - 30 - x86_64 - Android 11.0)配合MAA的linux x64动态库 ### ⚠️ [Genymotion](https://www.genymotion.com/) From 275633eeca9424c00e957ef55e85e87b92a2d8ba Mon Sep 17 00:00:00 2001 From: zayn7lie Date: Tue, 30 May 2023 18:16:58 +0800 Subject: [PATCH 3/6] docs: formalization --- docs/1.5-Linux模拟器支持.md | 64 +++++++++++++++++++++++++++---------- 1 file changed, 47 insertions(+), 17 deletions(-) diff --git a/docs/1.5-Linux模拟器支持.md b/docs/1.5-Linux模拟器支持.md index a480aba013..fd541e564b 100644 --- a/docs/1.5-Linux模拟器支持.md +++ b/docs/1.5-Linux模拟器支持.md @@ -2,28 +2,58 @@ ## 准备工作 -- 在[MAA官网](https://maa.plus/)下载Linux动态库并解压 -- 进入`./MAA-v{版本号}-linux-x{框架}/Python/`目录下打开`sample.py`文件 -- 配置adb:找到[if asst.connect('adb.exe', '127.0.0.1:5555'):](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L48)一栏根据系统情况填写 - - 如果模拟器使用`avd`自带`adb`,可以直接在`adb.exe`一栏填写`adb`路径(一般在`~/Android/Sdk/platform-tools/`里面可以找到,例如`if asst.connect("/home/user1/Android/Sdk/platform-tools/adb", "模拟器的adb地址"):`) - - 如果使用其他模拟器须先下载`adb`:`sudo apt install adb`后填写路径或全局变量直接写`"adb"`即可 - - adb地址的获取:可以直接使用adb工具:`adb路径 devices` - - 例如`/home/user1/Android/Sdk/platform-tools/adb devices` - - 返回两行 - - `List of devices attached` - - `emulator-5555 device` - - `emulator-5555`就是模拟器的adb地址,填入`127.0.0.1:5555`,如`if asst.connect("/home/user1/Android/Sdk/platform-tools/adb", "emulator-5555"):` -- 这时候可以测试下,`$ python3 sample.py`,如果返回`连接成功`则基本完成了 -- 自定义任务:[# 任务及参数请参考 docs/集成文档.md](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54)一栏根据需要和[3.x集成文档](https://maa.plus/docs/3.1-%E9%9B%86%E6%88%90%E6%96%87%E6%A1%A3.html)部分修改 +### 1. 文件准备 + +1. 在 [MAA 官网](https://maa.plus/) 下载 Linux 动态库并解压 + +2. 进入 `./MAA-v{版本号}-linux-x{框架}/Python/` 目录下打开 `sample.py` 文件 + +### 2. `adb` 配置 + +1. 找到 [`if asst.connect('adb.exe', '127.0.0.1:5555'):`](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L48) 一栏 + +2. `adb` 工具调用 + + - 如果模拟器使用 `avd` 自带 `adb` ,可以直接在 `adb.exe` 一栏填写 `adb` 路径,一般在 `~/Android/Sdk/platform-tools/` 里面可以找到,例如: + + ```python + if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "模拟器的 adb 地址"): + ``` + + - 如果使用其他模拟器须先下载 `adb` : `$ sudo apt install adb` 后填写路径或全局变量直接写 `adb` 即可 + +3. 模拟器 `adb` 路径获取 + + - 可以直接使用 adb 工具: `$ adb路径 devices` ,例如: + + ```shell + $ /home/foo/Android/Sdk/platform-tools/adb devices + List of devices attached + emulator-5555 device + ``` + + - `emulator-5555` 就是模拟器的adb地址,填入 `127.0.0.1:5555` ,例如: + + ```python + if asst.connect("/home/foo/Android/Sdk/platform-tools/adb", "emulator-5555"): + ``` + +4. 这时候可以测试下: `$ python3 sample.py` ,如果返回 `连接成功` 则基本完成了 + +### 3. 任务配置 + +自定义任务: [# 任务及参数请参考 docs/集成文档.md](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54) 一栏根据需要和 [3.x 集成文档](https://maa.plus/docs/3.1-%E9%9B%86%E6%88%90%E6%96%87%E6%A1%A3.html) 部分修改 ## 模拟器支持 ### ✅ [AVD](https://developer.android.com/studio/run/managing-avds) -- 必选配置:16:9的屏幕分辨率,且分辨率需大于720p -- 推荐配置:x86_64的框架(R - 30 - x86_64 - Android 11.0)配合MAA的linux x64动态库 +必选配置: 16:9 的屏幕分辨率,且分辨率需大于 720p + +推荐配置: x86_64 的框架 (R - 30 - x86_64 - Android 11.0) 配合 MAA 的 Linux x64 动态库 ### ⚠️ [Genymotion](https://www.genymotion.com/) -- 高版本安卓自带x86_64框架,轻量但是明日方舟易闪退 -- 暂未严格测试,adb功能和路径获取没有问题 +高版本安卓自带 x86_64 框架,轻量但是明日方舟易闪退 + +暂未严格测试, adb 功能和路径获取没有问题 From 88226c13a01261e4d9cc4fe9e7968a49160d7c4f Mon Sep 17 00:00:00 2001 From: zayn_lie Date: Tue, 30 May 2023 19:21:10 +0800 Subject: [PATCH 4/6] docs: typo --- docs/1.5-Linux模拟器支持.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/1.5-Linux模拟器支持.md b/docs/1.5-Linux模拟器支持.md index fd541e564b..3f49acef07 100644 --- a/docs/1.5-Linux模拟器支持.md +++ b/docs/1.5-Linux模拟器支持.md @@ -42,7 +42,7 @@ ### 3. 任务配置 -自定义任务: [# 任务及参数请参考 docs/集成文档.md](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54) 一栏根据需要和 [3.x 集成文档](https://maa.plus/docs/3.1-%E9%9B%86%E6%88%90%E6%96%87%E6%A1%A3.html) 部分修改 +自定义任务: 根据需要参考 [3.x 集成文档](https://maa.plus/docs/3.1-%E9%9B%86%E6%88%90%E6%96%87%E6%A1%A3.html) 对 [# 任务及参数请参考 docs/集成文档.md](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/722f0ddd4765715199a5dc90ea1bec2940322344/src/Python/sample.py#L54) 一栏进行修改 ## 模拟器支持 From 4d9ad0421760c8291d1a0661067b06086108d0b6 Mon Sep 17 00:00:00 2001 From: zayn_lie Date: Tue, 30 May 2023 19:23:54 +0800 Subject: [PATCH 5/6] docs: new line --- docs/1.5-Linux模拟器支持.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/1.5-Linux模拟器支持.md b/docs/1.5-Linux模拟器支持.md index 3f49acef07..12c48ab264 100644 --- a/docs/1.5-Linux模拟器支持.md +++ b/docs/1.5-Linux模拟器支持.md @@ -57,3 +57,4 @@ 高版本安卓自带 x86_64 框架,轻量但是明日方舟易闪退 暂未严格测试, adb 功能和路径获取没有问题 + From 57623c3d048d14d09ddbbb3647492d86a9b28cb2 Mon Sep 17 00:00:00 2001 From: zayn7lie Date: Tue, 30 May 2023 19:27:38 +0800 Subject: [PATCH 6/6] docs: delete new line --- docs/1.5-Linux模拟器支持.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/1.5-Linux模拟器支持.md b/docs/1.5-Linux模拟器支持.md index 12c48ab264..3f49acef07 100644 --- a/docs/1.5-Linux模拟器支持.md +++ b/docs/1.5-Linux模拟器支持.md @@ -57,4 +57,3 @@ 高版本安卓自带 x86_64 框架,轻量但是明日方舟易闪退 暂未严格测试, adb 功能和路径获取没有问题 -