使用腾讯手游助手作为开发测试模拟器的方案---以及部分问题的解决方案-1

news2024/11/20 22:38:37

目录

前言:

一.目录结构

二.注册表研究

1.HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Tencent\MobileGamePC

2.HKEY_CURRENT_USER\Software\Tencent\MobileGamePC

三.模拟器快捷启动

1.快捷启动命令:

2.启动命令如何放入桌面:

3.adb端口,目前测试均可以使用:


前言:

此文主要介绍使用第三方模拟器(这里使用腾讯手游助手)作为开发工具,此模拟器分为两个引擎,一个与其他模拟器一样基于virtualbox的标准引擎,不过优化不太好,一个是他们主推的aow引擎,此引擎。关于aow没有太多的技术资料,目前只能了解到此引擎可以在没有vt的环境下运行。后续会不断更新。主要包括:目录结构分析,注册表分析,快捷启动指令、问题解决。

一.目录结构

第一个应该是aow引擎的数据文件夹,此模拟器把安卓路径虚拟化,文件夹中可以看到内部系统镜像直接以bin格式文件存储,镜像以外的数据直接按照Linux的iNode分配文件

第二个是腾讯手游助手的市场.估计是为了配置助手和拉取模拟器

第三个cloudgame应该是云游戏的文件夹,这个和模拟器没啥关系

第四个UI,是模拟器的UI,以及键位等其他配置的工具

第五个vdi_100_x64:不用说肯定是基于vbox的标准引擎的数据文件夹,打开文件可以看到文件夹内包含system.sdcard,data的vdi文件

每个文件夹中都有包含的tinst.exe推测是腾讯手游助手的更新文件


二.注册表研究

目前找到此软件的注册表路径为:

1.HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Tencent\MobileGamePC

可以看到文件夹目录如下:

可以看到右侧有显示的值:supplyid这里存放的是安装的渠道id值,估摸着是为了在判断是否下载到beta版本和获取beta版本渠道使用的,version肯定是在说版本号。

然后看左侧目录:

第一个Aegine:里面存放着CPU和GPU测试的分数,推测是在启动运行,目的是他们开发排查是否硬件太低导致的问题

第三个Appmarket:存放着上次crash的时间、安装时间、以及autostart属性名,把值改为0可以让腾讯手助不再开机自启。

第五个UI:存放着安装时间,上次运行和运行成功的时间,以及设置的渲染模式。不多做介绍

第二个、第四个和最后一个就不说了里面存放着版本号,等一些不是很重要的信息

2.HKEY_CURRENT_USER\Software\Tencent\MobileGamePC

此路径也是一些配置和设置,至于为什么分两个我也不清楚,讲一些重要的部分

GraphicsCardEnabled:是是否启动独显,为1时启动

GpsLocation:肯定是存放gps定位信息,猜测会动态更新

Region:语言

syzs_emulator_hwnd:模拟器的

UserLanguage:用户设置的语言

sf:共享目录,大概是存放临时文件和拉取服务器配置的位置以及下载的apk,

TempPath:临时文件目录,其实就是共享目录的上级目录


三.模拟器快捷启动

通过抓命令行的方式,我找到了这个模拟器中,强制使用某一渲染模式和模拟他们市场快速启动傲引擎/标准引擎,以及启动引擎中引擎的方式


1.快捷启动命令:

  腾讯手游助手内置两个安卓x86版本,一个是4.4,一个是7.1,在不加任何参数启动 安装目录\ui\AndroidEmulatorEx.exe会自动启动4.4引擎。启动参数要在安装引擎后才可用,默认不会安装引擎,可以先去市场下载这些引擎的游戏或者应用(例如qq),把引擎安装上后可使用。

其他引擎启动可以参考这里:


强制以某一引擎启动:
-engine aow  解释:傲引擎
-engine vdi  解释:标准引擎

-vm 0 解释:4.4引擎
-vm 100 解释:7.1引擎
例如启动7.1的傲引擎版本命令:安装目录\ui\AndroidEmulatorEx.exe -engine aow 


强制使用某一渲染模式:
前面在windows使用virtualbox搭建安卓x86环境说过大部分模拟器使用google的angle库将安卓内的opengles请求转换成opengl desktop和directx来运行,腾讯手游助手也不例外,但是,部分应用会被市场配置到指定渲染模式运行,若需要强制以一个渲染模式运行可以在启动时加入以下参数:

-force-directx -glesv3 1 解释:强制以opengl启动
-force-opengl -glesv3 1  解释:强制以directx启动

例如强制以opengl启动标准引擎7.1命令:安装目录\ui\AndroidEmulatorEx.exe -engine aow 

模拟启动内部应用(注意:启动的应用一定要是安装好的):

-cmd StartApk -startpkg 包名

以使用傲引擎7.1强制启动和平精英为例

安装目录\ui\AndroidEmulator.exe -cmd StartApk -startpkg com.tencent.tmgp.pubgmhd -engine aow -vm 100 

2.启动命令如何放入桌面:

方案1:

找到UI文件夹(右击桌面上的腾讯手游助手),回到上一级TxGameAssistant目录,里面有一个UI目录,进入后找到AndroidEmulatorEx.exe,选中右击发送到桌面快捷方式。在桌面上可以看到这个文件的快捷方式,右击-属性,在目标后面加入启动参数,例如下图

然后应用启用

方案2:编写bat,具体的逻辑和代码实现如下,以下是启动傲引擎7.1和平精英的案例,可以参考以上参数说明修改为其他游戏

rem 先查询注册表HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\TENCENT\MobileGamePC\UI的InstallPath,获取UI的安装位置,然后cd到那个目录。启动就好了

@echo off
cd /d %~dp0
for /f "tokens=2* delims=Z" %%a in ('Reg Query "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\TENCENT\MobileGamePC\UI" /v "InstallPath" ') do set UI=%%a   
cd /d %UI%
start AndroidEmulator.exe -engine aow -vm 100 -force-opengl -glesv3 1 -cmd StartApk -startpkg com.tencent.tmgp.pubgmhd
exit

3.adb端口,目前测试均可以使用:

傲引擎:5555
标准引擎:5655
adb connect 127.0.0.1:5555
adb connect 127.0.0.1:5655


Developed by 福州机电工程职业技术学校 wh

邮箱联系方式:xiaohui032901@foxmail.com

qq联系方式:2151335401、3135144152

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/640689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyTorch深度学习实战(3)——使用PyTorch构建神经网络

PyTorch深度学习实战(3)——使用PyTorch构建神经网络 0. 前言1. PyTorch 构建神经网络初体验1.1 使用 PyTorch 构建神经网络1.2 神经网络数据加载1.3 模型测试1.4 获取中间层的值 2. 使用 Sequential 类构建神经网络3. PyTorch 模型的保存和加载3.1 模型…

【框架源码】Spring源码解析之Bean生命周期流程

观看本文前,我们先思考一个问题,什么是Spring的bean的生命周期?这也是我们在面试的时候,面试官常问的一个问题。 在没有Spring之前,我们创建对象的时候,采用new的方式,当对象不在被使用的时候&…

【网络】UDP/TCP网络程序

目录 UDP网络程序 简单通信版本(UDP) 准备工作(接口学习、分析) 整体代码(Server.hpp/Server.cpp/Client.hpp/Client.cpp) 添加“婴儿版”业务逻辑 英译汉翻译 my_shell 聊天室 linux和windows通信 TCP网络程序 简单通…

AB32VG1:SDK_AB53XX_V061(3)IO口复用功能的补充资料

文章目录 1.IO口功能复用表格2.功能映射寄存器 FUNCTION03.功能映射寄存器 FUNCTION14.功能映射寄存器 FUNCTION2 AB5301A的官方数据手册很不完善,没有开放出来。我通过阅读源码补充了一些关于IO口功能复用寄存器的资料。 官方寄存器文档:《 AB32VG1_Re…

chatgpt赋能python:Python怎么截屏Windows

Python怎么截屏Windows Python是一种高级编程语言,具有快速开发、易于学习、可移植性强等优点,因此在实现Windows屏幕截图方面也是一种非常强大的工具。 什么是Windows屏幕截图? Windows屏幕截图是将当前屏幕或窗口的图像保存成文件或剪贴…

Android BlueToothBLE入门(二)——设备的连接和通讯(附Demo源码地址)

学更好的别人, 做更好的自己。 ——《微卡智享》 本文长度为7870字,预计阅读12分钟 前言 接《Android BlueToothBLE入门(一)——低功耗蓝牙介绍》上篇,这篇文章主要就是来做Demo实现Android两台设备的数据通讯。 实现效…

chatgpt赋能python:Python如何快速处理数据

Python如何快速处理数据 在当今数据爆炸的时代,数据处理已经成为一项非常重要的任务。因此,如何快速、高效地处理数据就成为了每个数据科学家、数据工程师以及数据分析师的必备技能之一。而Python正是其中的佼佼者。 为什么选择Python进行数据处理 Py…

Spring事物失效的八大场景

1.方法内的自调用:spring事物是基于aop的,只要使用代理对象调用某个方法时,spring事物才能生效,而在一个方法内使用this.xxx()时。this并不是代理对象,所以会失效(实际上是transaction注解失效)…

用程序控制对文本的复制和粘贴pyperclip模块

【小白从小学Python、C、Java】 【等级考试500强双证书考研】 【Python-数据分析】 用程序控制对文本的复制和粘贴 pyperclip模块 选择题 关于下列代码说法错误的是? import pyperclip print(【执行】pyperclip.copy("Python 太强大了!")) p…

读发布!设计与部署稳定的分布式系统(第2版)笔记01_生产环境的生存法则

1. 系统“应该”做什么 1.1. 添加所需特性 2. 系统“不应该”做什么 2.1. 崩溃 2.2. 停止响应 2.3. 丢失数据 2.4. 侵犯隐私 2.5. 损失金钱 2.6. 摧毁公司 2.7. “杀死”客户 3. QA部门的测试 3.1. 团队的大部分工作是想方设法地通过测试 3.2. 做了敏捷、务实和自动…

【设计模式与范式:行为型】57 | 观察者模式(下):如何实现一个异步非阻塞的EventBus框架?

上一节课中,我们学习了观察者模式的原理、实现、应用场景,重点介绍了不同应用场景下,几种不同的实现方式,包括:同步阻塞、异步非阻塞、进程内、进程间的实现方式。 同步阻塞是最经典的实现方式,主要是为了…

GreenPlum分布式集群部署实战

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

GC演变过程、三色标记法、大白话讲解G1

文章目录 GC演变过程并发垃圾回收需要解决的问题怎么确定一个垃圾?并发收集存在的问题 三色标记法CMS垃圾收集器G1垃圾收集器介绍,主要特点优点使用注意点 GC演变过程 在Java中,垃圾收集一直是一个非常重要的组成部分, 到目前为止,垃圾收集器已经有十种了, 在不停的优化. 那为…

GoogleTest之Actions的用法

目录 返回值Actions的组合验证复杂参数mock副作用改变mock对象的行为设置返回类型的默认值使用自定义函数作为Actions 通用示例 namespace mock_action { class Foo { public:virtual ~Foo() {}virtual int& GetBar() 0; // 1virtual int GetPointerValue() 0; //…

Linux CentOS7虚拟机配置静态IP并允许上网的配置方法

文章目录 前言一、开启本地电脑VMnet8二、Linux配置静态IP1. NAT模式设置2. 开启虚拟机登录root用户3. 执行命令设置静态IP4. 重启网卡① 重启网卡 (正常)② 重启网卡 (异常)③ 解决方式:禁用NetworkManager 5. 查看ip6. 本地电脑cmd窗口ping虚拟机7. 虚拟机ping本地…

Golang每日一练(leetDay0095) 第一个错误的版本、完全平方数

目录 278. 第一个错误的版本 First Bad Version 🌟 279. 完全平方数 Perfect Squares 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日…

springboot的数据访问和数据视图

当使用 Spring Boot 进行数据访问时,我们可以选择使用 MyBatis 或 JPA(Java Persistence API)来实现增删改查操作。下面我将分别给出使用这两种方式整合数据访问的详细步骤和示例,同时结合 Thymeleaf 实现数据展现。 方式一: 使用…

AI实战营:语义分割与MMSegmentation

目录 OpenMMLab图像分割算法库MMSegmentation 深度学习下的语义分割模型 全卷积网络Fully Convolutional Network 201 ​编辑 上下文信息与PSPNet模型 空洞卷积与DeepLab模型 语义分割算法总结 语义分割 前沿算法 SegFormer K-Net MaskFormer Mask2Former Seg…

PySide2 or PyQt5???该如何抉择???

1. 区别 Qt库里面有非常强大的图形界面开发库,但是Qt库是C语言开发的,PySide2、PyQt5可以让我们通过Python语言使用Qt。 但是 PySide2、PyQt5 这两者有什么区别呢? 可以形象地这样说: PySide2 是Qt的 亲儿子 , PyQt5 …

面向对象程序设计|静态友元

题目一:复数运算 题目描述: 复数类的声明如下 要求如下: 1. 实现复数类和友元函数addCom和outCom; 2. 参考addCom函数为复数类增加一个友元函数minusCom,用于实现两个复数的减法; 3. 在main函数中&…