当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇手游从零架设改包签名到真机测试全流程

热度:
一、准备环境和工具

电脑用Windows10/11,关掉防火墙或把端口加白名单。先装齐依赖:

VC++2005-2022运行库合集
JavaJDK1.8
MySQL5.7或按包要求用MongoDB/SQLServer
Navicat
Notepad++
Apktool+JADX
jarsigner(JDK自带)
雷电模拟器或Genymotion
APK签名工具(ApkToolAid、uber-apk-signer都行)

服务端解压到纯英文无空格路径,比如D:\MirMobileServer。路径带中文、带空格,启动直接闪退。

二、部署服务端和数据库

先看包里有没有sql、conf、Mir200、DBServer、LoginGate、GameGate、M2Server这几个目录,缺核心目录就是废包。

MySQL环境这样建库:

mysql-uroot-p
CREATEDATABASEmir2DEFAULTCHARSETutf8mb4;
exit
mysql-uroot-pmir2<D:\MirMobileServer\DB\mir2.sql

Navicat导入也行,选UTF-8,别用默认GBK,不然角色名装备名乱码。

MongoDB版本按包里批处理起服务,导入初始JSON/BSON数据。SQLServer版本要开混合模式、启用sa、TCP/IP协议、1433端口放行。

改数据库连接配置,常见文件:

Config\DBConfig.ini
DBServer\DBService.ini
ServerConfig.ini

字段填法:

DBHost=127.0.0.1
DBPort=3306
DBUser=root
DBPass=你设的密码
DBName=mir2

三、改IP和端口

单机测试全部填127.0.0.1。同WiFi真机填ipconfig拿到的192.168.x.x。云服务器填公网IP。

用Notepad++批量搜索替换这些文件里的旧IP:

Mir200\!Setup.txt
Setup\MobileSetup.txt
LoginSrv\LoginSrv.ini
LoginGate.ini
RunGate.ini
SelGate.ini
LoginCenter\config\serverlist.json
serverlist.lua
world.ini
gateway_cfg.lua
session_cfg.lua
www\project.manifest
www\version.manifest

常见默认端口:

登录网关7000
SelGate7100
RunGate7200
微端/热更8000、8080
MySQL3306
网站80或8080
SQLServer1433

改完保存,编码跟随原文件,别转带BOM的UTF-8,manifest一转码就卡更新。

四、启动顺序

顺序错了必报连接超时,按依赖关系来:

1.起数据库(MySQL/Mongo/SQLServer服务)
2.起DBServer,看日志显示数据库连接成功
3.起LoginSrv/LoginCenter中控
4.起LoginGate登录网关
5.起SelGate
6.起RunGate/GameGate游戏网关
7.起微端UpdateGate/热更服务
8.起M2Server主引擎
9.起网站(phpStudy或独立web服务)

每个黑窗没红字再起下一个。缺LoginGate列表空,缺RunGate能登录进图掉线,缺微端大资源卡加载,缺M2地图全空。

启动前任务管理器清一遍残留:M2Server、DBServer、LoginGate、RunGate、mysql、java,旧进程锁端口新端起不来。

查端口占用:

netstat-ano|findstr":7000:7200:3306"

有PID就结束掉,或者统一换备用端口,客户端那边同步改。

五、改安卓APK客户端

配套APK拿来解包:

apktooldclient.apk-oclient_src

解出来重点看这几个位置:

assets/serverlist.txt
assets/config.json
assets/res/config
project.manifest
version.manifest
lua配置脚本

把里面旧IP换成你的IP,端口和网关配置一致。有的版本IP写死在smali或so里,JADX打开APK搜旧IP字符串,定位后改smali的const-string。

改完重打包:

apktoolbclient_src-onew_client_unsigned.apk

生成密钥并签名:

keytool-genkey-aliasmir-keyalgRSA-validity30000-keystoremir.keystore
jarsigner-verbose-sigalgSHA1withRSA-digestalgSHA1-keystoremir.keystorenew_client_unsigned.apkmir

没签名装不上,模拟器可能放宽校验,真机必须签。同包名老版本先卸载再装。

战神引擎自带APK_Tools的走配置器更省事:改client_config.txt里的LoginIP、LoginPort,点打包签名,不用手敲apktool。

六、热更资源处理

www目录丢到phpStudy的WWW根目录。project.manifest和version.manifest里的IP全替换,mir2.zip、mir264.zip内def文件如果带IP也要改。

改完用热更工具重算MD5写回manifest。MD5不对,客户端表现就是反复下载资源、更新到99%失败、卡在加载界面。

七、模拟器和真机测试

雷电模拟器直接把签名APK拖进去安装。进游戏走完整流程:

能出公告和区服列表
能注册账号
能创建角色
能进新手村
打怪掉装正常
NPC对话不崩
商城、背包、技能释放正常

本机用127.0.0.1通了,再换局域网IP测一次,最后换公网IP重打包测外网。

外网部署在路由器做端口映射,外部端口和内部端口一致,云服务器安全组同步放行7000、7100、7200、8000、8080、3306。两道墙只开一道照样连不上。

八、常见故障速查

M2启动秒退:内存不够,2G升4G;或者数据库没导表、路径有中文。
数据库连接失败:密码错、库名错、MySQL没起、bind-address锁127.0.0.1。
卡登录界面转圈:LoginGate没起,或客户端IP端口对不上。
能选角色进图掉线:RunGate没起或端口被占。
卡资源更新:manifestIP没改全,或MD5没重算。
APK装不上:没签名,或同包名冲突,先卸载。
黑屏进不去:热更资源缺文件,微端没起。
外网连不上本机能玩:安全组没放行,或客户端APK还是旧IP。
中文乱码:建库字符集不对,导SQL时编码选错。

九、服务端调参入口

爆率、怪物、NPC、任务、转生、装备属性都在服务端脚本目录:

Mir200\Envir\MonItems爆率
Mir200\Envir\MapInfo.txt地图
Mir200\Envir\Npc_defNPC脚本
Mir200\Envir\Market_Def商店和对话
Mir200\Envir\QuestDiary任务链

改完不用重装客户端,M2里重载脚本或重启M2生效。

十、单机到外网的平滑迁移

先在单机127.0.0.1把玩法跑通,确认不崩、不卡、数据能存。再统一把服务端配置、manifest、APK里的IP换成公网,重打包APK,重算热更MD5,安全组放行端口。迁移过程别边改边测,一次性全量替换再测,漏一个IP就得来回翻半小时。

架设顺序记住一条主线:环境依赖→建库导表→改IP端口→按序起服务→改包签名→模拟器验证→外网开放。哪一步崩就看哪一步的日志,不要跳过日志直接重装。

十一、写内容时的落地思路

服务端跑通后,爆率、活动、首充、灵符这些玩法都靠脚本和数据库调。顺手把版本亮点整理成几篇图文长文,标题卡30字符左右,正文直给入口和领取路径,发到站点做收录,后面找服的人搜“单职业白嫖点”“火炬红包怎么开”这类词就能进来。文章里别堆术语,把操作步骤写具体,收录和转化都比泛泛介绍强。
[顶部]