求求了,支持自定义模拟器的重启
你的功能请求是否与问题有关?
手动填个路径重启的那种就够用了!夜间挂机可太需要重启模拟器的功能了 明明看着emulator.py里一堆雷电的代码为什么跑起来就不支持呢_(:3J∠)_
解决方案
No response
其他内容
No response
代码里实际上是给自定义模拟器预留了空间的,但是因为路径识别不是很优雅就砍掉了 如果你想要,可以给alas pr一个雷电模拟器的支持(很简单的,但是需要自己测试过)
我该怎么做_(:3J∠)_
module\device\emulator.py,在SUPPORTED_EMULATORS中加入雷电模拟器的各种参数,在UI上加入雷电模拟器的选项,然后测试没问题就行
module\device\emulator.py,在SUPPORTED_EMULATORS中加入雷电模拟器的各种参数,在UI上加入雷电模拟器的选项,然后测试没问题就行
加入了 'ld_player_9': EmulatorInstance( name="LDPlayer9", root_path=".", emu_path="./dnplayer.exe", vbox_path="./vms", vbox_name='*.vbox$' ), 然后出现的报错我已经看不懂了 log.txt 大概是vbox_name我最终还是没写对?
我注意到雷电的配置的后缀名是.config而不是.vbox,你可能需要进行对应的修改,然后alas需要从配置文件里面找到serial对应的端口,具体查找的东西在注释里有,你可以人工检查一下
我注意到雷电的配置的后缀名是.config而不是.vbox,你可能需要进行对应的修改,然后alas需要从配置文件里面找到serial对应的端口,具体查找的东西在注释里有,你可以人工检查一下
所以说雷电需要的是./vms/config下的"leidian0.config"这一类文件而不是./vms/leidian0下的“leidian.vbox”这类文件吗?
根据注释我在上文的./vms/leidian0目录下找到leidian.vbox和leidian-1.15-windows.vbox中均有以下文本
<NAT> <!-- use it when needed <Forwarding name="Rule 1" proto="1" hostport="2222" guestport="2222"/> --> </NAT>
但是在新建的多开模拟器./vms/leidian1目录下存在相同文件,内容也相同,似乎并不能区分多开与否
我注意到雷电的配置的后缀名是.config而不是.vbox,你可能需要进行对应的修改,然后alas需要从配置文件里面找到serial对应的端口,具体查找的东西在注释里有,你可以人工检查一下
冷静了一个下午,我现在依靠写死设定完成了本机的雷电9模拟器1启动,没有思考多开的问题。以下为相关代码 新建了雷电9类
class LDPlayer9Instance(EmulatorInstance):
@cached_property
def id_and_serial(self):
"""
Returns:
list[str, str]: List of multi_id and serial.
"""
vbox = []
for path, folders, files in os.walk(os.path.join(self.root, self.vbox_path)):
for file in files:
if re.match(self.vbox_name, file):
file = os.path.join(path, file)
vbox.append(file)
serial = []
for file in vbox:
with open(file, 'r') as f:
serial.append([os.path.basename(file).split(".")[0], f'127.0.0.1:5555'])
return serial
无论在雷电9的.config文件还是.vbox文件中都找不到serial相关的描述,毕竟雷电本身serial就在emulator-555* 或 127.0.0.1:555*横跳,所以直接用我自己最常用的serial写死了。 SUPPORTED_EMULATORS中添加了雷电9相关文本
'ld_player_9': LDPlayer9Instance(
name="LDPlayer9",
root_path=".",
emu_path="./dnplayer.exe",
vbox_path="./vms/leidian0",
vbox_name='.*.vbox$'
),
因为没有从文件找serial,所以vbox_name估计完全没用。 最后在detect_emulator进行了更改
for emulator in self.SUPPORTED_EMULATORS.values():
try:
serials = emulator.id_and_serial
if emulator.name == 'LDPlayer9':
for cur_serial in serials:
if cur_serial[0] == 'leidian':
emulators.append([emulator, cur_serial[0]])
else:
for cur_serial in serials:
if cur_serial[1] == serial:
emulators.append([emulator, cur_serial[0]])
except FileNotFoundError:
pass
因为serial是写死的,所以用id来保证打开的是我自用的第一个模拟器。实机测试可以正常运行
INFO 21:02:42.804 │ <<< EMULATOR RESTART >>>
INFO 21:02:42.807 │ Detect emulator from all emulators installed
INFO 21:02:42.811 │ Detected emulators:
INFO 21:02:42.814 │ Name: LDPlayer9, Multi_id: leidian
INFO 21:02:42.817 │ Find the only emulator, using it
INFO 21:02:42.820 │ Start emulator
INFO 21:02:42.822 │ Execute: "D:/leidian/LDPlayer9/dnplayer.exe"
记事本的极限就到这里了,py代码我也确实第一次接触,每一个函数都得百度一遍用法。我甚至压根找不到UI文件在哪里,也无法在UI里专门加上一条雷电模拟器9,不然或许能少走很多弯路。我准备保留这个文件依靠反复覆盖满足自身使用,如果您愿意伸出援手,整合这些代码并加上UI方便单开雷电9的玩家使用,那么我将感激不尽。若是无暇那也无妨,可以直接将此feature关闭,我已着实无力再进一步完善代码和功能了。 emulator.zip