CocosCreator 幸运武侠游戏客户端
编译发布文档
1. 网络配置
1.1 游戏服务器配置
配置文件:assets/app/net/NetConfig.ts
export class NetConfig {
// WebSocket类型:wss(生产)或 ws(开发)
public wsType: string = "wss";
// HTTP类型:https(生产)或 http(开发)
public httpType: string = "https";
// 游戏服务器地址
public gameIp: string = "game.example.com";
// IM即时通讯服务器地址
public imIp: string = "im.example.com/api/v1";
public imWsIp: string = "im.example.com/websocket";
// 端口配置
public httpPort: string = "7443";
public gamePort: string = "7444";
// WebSocket后缀路径
public suffix: string = "/lua/web_socket";
// 微信分享图片和页面URL
public wxShareImgUrl: string = "https://cdn.example.com/sharepage/share.jpg";
public sharePageUrl: string = "https://cdn.example.com/sharepage/index.html";
}
1.2 开发环境配置
开发环境下会自动切换到测试服务器:
if (DEV) {
netConfig.gameIp = "game-dev.example.com";
}
1.3 Android网络安全配置
配置文件:native/engine/android/app/src/main/res/xml/network_config.xml
此配置文件主要用于允许明文HTTP流量和信任用户安装的证书,包含穿山甲广告SDK所需的域名白名单。
注意事项:
- 生产环境建议关闭明文流量:cleartextTrafficPermitted="false"
- 开发调试时可设置为true
- 确保所有第三方SDK的域名都已添加到白名单
2. 微信配置
2.1 微信AppID配置
位置1: Android原生配置
- 文件:native/engine/android/app/src/com/bluelaugh/lma/AppConst.java
- 参数:WX_AppId = "your_wechat_appid"
位置2: 微信开放平台
- 登录微信开放平台
- 在应用管理中获取AppID
- 配置支付、分享等相关能力
2.2 微信小游戏SDK使用
SDK文件:assets/app/native-sdk/WXMiniGame.ts
主要功能
1. 登录功能
WXMiniGame.instance.login({
success: (res) => {
console.log("登录成功", res.code);
},
fail: (err) => {
console.error("登录失败", err);
}
});
2. 广告激励视频
WXMiniGame.instance.showAd((status: boolean) => {
if (status) {
console.log("广告播放完成,发放奖励");
}
});
3. 复制文本
WXMiniGame.instance.copyText("复制内容",
() => console.log("复制成功"),
(error) => console.error("复制失败", error)
);
4. 分享功能
WXMiniGame.instance.shareAppMessage("分享标题", "roomid123",
() => console.log("分享成功"),
(error) => console.error("分享失败", error)
);
5. 获取游戏圈数据
WXMiniGame.instance.getGameClubData([1, 2, 3],
(res) => console.log("获取成功", res),
(error) => console.error("获取失败", error)
);
6. 版本更新检查
WXMiniGame.instance.checkUpdate();
2.3 激励视频广告配置
- 广告单元ID: your_wechat_ad_unit_id(在WXMiniGame.ts第10行配置)
- 需要在微信公众平台的"流量主"->"广告管理"中创建广告位
- 获取广告位ID后替换viewId变量
2.4 游戏圈配置
- OpenLink: 在WXMiniGame.ts第11行配置
- 用于打开微信游戏圈功能
- 需要向微信申请游戏圈权限并获取OpenLink
3. 抖音小游戏配置
3.1 抖音小游戏SDK使用
SDK文件:assets/app/native-sdk/TTMiniGame.ts
主要功能
1. 登录并获取用户信息
TTMiniGame.instance.login(
(res: LoginResponse) => {
if (res.code === '0') {
console.log("用户授权成功", res.userInfo);
} else {
console.log("用户拒绝授权,匿名登录");
}
},
(error) => console.error("登录失败", error)
);
2. 广告激励视频
TTMiniGame.instance.showAd((status: boolean) => {
if (status) {
console.log("广告播放完成,发放奖励");
}
});
3. 跳转到侧边栏
TTMiniGame.instance.goSidebar(
() => console.log("跳转成功"),
(error) => console.error("跳转失败", error)
);
4. 复制文本
TTMiniGame.instance.copyText("复制内容",
() => console.log("复制成功"),
(error) => console.error("复制失败", error)
);
5. 分享功能
TTMiniGame.instance.shareAppMessage("分享标题", "roomid123",
() => console.log("分享成功"),
(error) => console.error("分享失败", error)
);
6. 每日分享
TTMiniGame.instance.dailyShare((status: boolean) => {
if (status) {
console.log("每日分享成功");
}
});
7. 版本更新检查
TTMiniGame.instance.checkUpdate();
8. 二进制转Base64
const base64Str = TTMiniGame.instance.setBufferToBase64(arrayBuffer);
3.2 激励视频广告配置
- 广告单元ID: your_douyin_ad_unit_id(在TTMiniGame.ts第21行配置)
- 需要在抖音小游戏开发者平台的"流量主"->"广告管理"中创建广告位
- 获取广告位ID后替换viewId变量
3.3 配置说明
在抖音开发者平台(https://microapp.bytedance.com/)完成以下配置:
- 创建小游戏应用
- 配置服务器域名
- 配置业务域名
- 开通广告流量主功能
- 创建激励视频广告位
4. TapTap SDK配置
4.1 TapTap配置参数
配置文件:native/engine/android/app/src/com/bluelaugh/lma/AppConst.java
public static String TapTap_Client = "your_taptap_client_id";
public static String TapTap_Token = "your_taptap_client_token";
public static String TapTap_ServerUrl = "https://your-server.taptap.example.com";
public static boolean TapTap_Ad = false; // 是否启用TapTap广告
public static boolean FirstGame = true; // 是否为首款游戏
4.2 TapTap配置步骤
注册开发者账号
获取Client ID和Client Token
- 在TapTap开发者中心的"游戏服务"->"应用配置"中获取
- 将Client ID和Client Token替换到AppConst.java中
配置服务器地址
- 使用TapPlay提供的共享域名或申请专属域名
- 替换TapTap_ServerUrl参数
集成SDK
- TapSDK已通过AAR包形式集成在native/engine/android/app/libs/目录
- 确保build.gradle中已正确引用
4.3 功能说明
- TapTap登录: 提供第三方登录功能
- 内建账户系统: 提供用户注册、登录、密码找回等功能
- 好友系统: 提供好友添加、查询等功能
- 成就系统: 提供游戏成就的展示和统计
- 排行榜: 提供游戏数据排行功能
5. 穿山甲广告配置
5.1 穿山甲配置参数
配置文件:native/engine/android/app/src/com/bluelaugh/lma/AppConst.java
public static String CSJ_AppId = "your_csj_appid"; // 穿山甲应用ID
public static String CSJ_AppName = "游戏名称"; // 应用名称
public static String CSJ_RewardAdId = "your_csj_ad_id"; // 激励视频广告位ID
5.2 穿山甲配置步骤
注册穿山甲账号
创建应用
- 在"应用管理"中创建Android应用
- 填写应用信息,上传应用图标
- 获取App ID
创建广告位
- 在"代码位管理"中创建广告位
- 选择"激励视频"广告类型
- 获取广告位ID(代码位ID)
配置网络安全
- 穿山甲相关域名已在network_config.xml中配置
- 包含以下域名:
pangolin.snssdk.com
api-access.pangolin-sdk-toutiao.com
log-api.pangolin-sdk-toutiao.com
等穿山甲相关域名
5.3 广告调用
广告功能通过微信和抖音SDK的showAd方法统一调用:
// 微信环境
WXMiniGame.instance.showAd((status) => {
if (status) {
// 广告播放完成,发放奖励
}
});
// 抖音环境
TTMiniGame.instance.showAd((status) => {
if (status) {
// 广告播放完成,发放奖励
}
});
5.4 注意事项
- 测试时使用穿山甲提供的测试ID
- 正式上线前替换为正式的广告位ID
- 确保网络安全配置正确,否则广告加载会失败
- 建议添加广告加载超时机制
- 合理控制广告展示频率,避免影响用户体验
6. 好游快爆配置
6.1 好游快爆配置参数
配置文件:native/engine/android/app/src/com/bluelaugh/lma/AppConst.java
public static String HYKB_AppId = "your_hykb_appid"; // 好游快爆应用ID
6.2 好游快爆配置步骤
申请接入
获取AppID
集成SDK
- 好游快爆SDK已通过AAR包形式集成
- 确保在native/engine/android/app/libs/目录中包含好游快爆SDK
配置参数
- 将获取的AppID替换到AppConst.java中的HYKB_AppId
6.3 功能说明
好游快爆SDK提供以下功能:
- 用户登录: 提供好游快爆账号登录
- 悬浮球: 显示好游快爆悬浮球入口
- 论坛: 跳转到游戏论坛
- 客服: 在线客服功能
- 用户中心: 用户信息管理
6.4 注意事项
- 需要在好游快爆平台配置游戏包名
- 测试时需要使用好游快爆提供的测试包
- 正式上线需要通过好游快爆的审核
7. Excel转JSON工具使用
7.1 工具位置
Cocos Creator编辑器路径:
扩展 -> libsExcel转json与js
7.2 Excel文件位置
Excel配置表存放路径:excel/
7.3 使用步骤
准备Excel文件
- 将配置表Excel文件放入excel/目录
- Excel格式要求:
- 第一行:字段注释(中文说明)
- 第二行:字段名(英文,代码中使用)
- 第三行:字段类型(number、string、boolean等)
- 第四行开始:数据内容
打开转换工具
- 打开Cocos Creator编辑器
- 点击菜单栏"扩展"
- 选择"libsExcel转json与js"
执行转换
- 在弹出的面板中选择要转换的Excel文件
- 点击"转换"按钮
- 工具会自动生成JSON和TS类型定义文件
生成文件位置
- JSON数据文件:assets/app/tables/ 目录
- TypeScript类型定义:assets/app/tables/ 目录
7.4 Excel配置示例
| 说明 | ID | 名称 | 等级 | 攻击力 | 防御力 |
| 字段 | id | name | level | attack | defense |
| 类型 | number | string | number | number | number |
| 数据1 | 1 | 新手剑 | 1 | 10 | 5 |
| 数据2 | 2 | 铁剑 | 5 | 25 | 10 |
7.5 代码中使用
import { 表名Table } from "./tables/表名Table";
// 获取配置数据
const config = 表名Table.instance.get(id);
console.log(config.name, config.attack);
7.6 注意事项
- Excel文件必须保存为.xlsx格式
- 字段名不能使用中文或特殊字符
- 字段名不能与TypeScript关键字冲突
- ID字段建议设为第一列,便于快速查找
- 修改Excel后需要重新转换才能生效
- 转换前建议备份旧的JSON文件
8. 热更新配置
8.1 热更新原理
项目使用oops-plugin-hot-update插件实现热更新功能,支持增量更新。
8.2 热更新资源目录
生成路径: oops_framework_remote/(与assets同级)
此目录用于存放热更新资源:
8.3 构建配置
方法1:通过Cocos Creator构建面板
打开构建发布面板
选择平台
配置热更新选项
- 找到"oops-plugin-hot-update"配置项
- 勾选"是否生成数据"
- 配置以下参数:
□ 是否生成数据: ✓ 勾选
□ 版本号: 1.0.0
□ 资源服务器地址: https://your-cdn.com/remote/
□ 生成路径: oops_framework_remote
执行构建
- 点击"构建"按钮
- 构建完成后,热更新文件会生成在oops_framework_remote/目录
方法2:通过构建脚本配置
在项目的build-templates/目录下配置热更新参数。
8.4 热更新文件结构
oops_framework_remote/
├── version.manifest # 版本清单文件
├── project.manifest # 项目清单文件
└── [平台名]/
├── assets/ # 资源文件
├── src/ # 脚本文件
└── ...
8.5 部署热更新资源
上传到CDN
- 将oops_framework_remote/目录上传到CDN服务器
- 确保URL可访问
配置服务器地址
const remoteUrl = "https://your-cdn.com/remote/";
测试热更新
- 修改游戏代码或资源
- 重新构建并生成热更新包
- 上传到CDN
- 启动旧版本游戏测试热更新流程
8.6 版本管理
版本号规则: 遵循语义化版本规范(Semantic Versioning)
主版本号.次版本号.修订号
例如:
1.0.0 -> 首次发布
1.0.1 -> 修复bug
1.1.0 -> 新增功能
2.0.0 -> 重大更新
注意事项:
- 每次构建热更新包时需要递增版本号
- 版本号必须大于线上版本才能触发更新
- 建议为不同平台维护独立的版本号
8.7 热更新流程
游戏启动
↓
检查本地版本
↓
连接更新服务器
↓
比对版本清单
↓
[需要更新] → 下载更新包 → 解压安装 → 重启游戏
↓
[无需更新] → 直接进入游戏
8.8 注意事项
- 原生平台代码修改(如Java、Objective-C)不支持热更新
- 热更新仅适用于脚本和资源文件
- 重大更新建议提交应用商店,引导用户更新整包
- 建议设置热更新超时时间,避免用户长时间等待
- 测试时注意清除本地缓存,确保热更新流程正常
9. Android端构建发布
9.1 构建前准备
检查配置文件
- 确认AppConst.java中所有配置参数正确
- 确认network_config.xml配置完整
检查SDK集成
- 微信SDK
- TapTap SDK
- 穿山甲SDK
- 好游快爆SDK
准备签名文件
- Android签名证书(.keystore文件)
- 记录keystore密码、alias和alias密码
9.2 Cocos Creator构建配置
打开构建发布面板
基础配置
发布平台: Android
游戏名称: 游戏名称
包名: com.example.yourpackage
Target API Level: 33 (建议)
APP ABI: armeabi-v7a, arm64-v8a
图标和启动画面
签名配置
签名: 勾选
证书路径: [选择.keystore文件]
证书密码: ****
Alias: ****
Alias密码: ****
热更新配置
oops-plugin-hot-update
├─ 是否生成数据: ✓ 勾选
├─ 版本号: 1.0.0
├─ 资源服务器地址: https://your-cdn.com/remote/
└─ 生成路径: oops_framework_remote
其他配置
使用调试密钥库: 取消勾选(发布时)
生成App Bundle(Google Play): 按需勾选
9.3 执行构建
点击"构建"按钮
- 等待构建完成
- 构建产物位置:build/android/
查看构建日志
生成APK
- 构建完成后会自动生成APK文件
- 文件位置:build/android/proj/build/outputs/apk/
9.4 Android Studio编译(可选)
如果需要在Android Studio中进一步调试或打包:
导入项目
- 打开Android Studio
- 选择"Open an existing project"
- 选择build/android/proj/目录
Gradle同步
- 等待Gradle同步完成
- 如有依赖问题,根据提示解决
配置签名
- Build -> Generate Signed Bundle / APK
- 选择APK
- 选择签名证书
- 选择构建类型(Release)
编译打包
- Build -> Build Bundle(s) / APK(s) -> Build APK(s)
- 等待编译完成
- 生成的APK在proj/app/build/outputs/apk/
9.5 测试APK
安装测试
功能测试清单
- 登录功能(微信/TapTap)
- 网络连接
- 广告播放
- 分享功能
- 热更新功能
- 音效和音乐
- 各个游戏功能
性能测试
- 检查内存占用
- 检查CPU使用率
- 检查电量消耗
- 检查网络流量
9.6 发布到应用商店
准备材料
应用信息
图片素材
- 应用图标(512x512)
- 应用截图(至少3张)
- 宣传图
- 宣传视频(可选)
证书和资质
- 软件著作权证书
- ICP备案号
- 游戏版号(必须)
- 文化部备案
发布渠道
国内主流应用商店:
- 应用宝(腾讯)
- 华为应用市场
- 小米应用商店
- OPPO软件商店
- vivo应用商店
- 360手机助手
- 百度手机助手
国际应用商店:
- Google Play(需要开发者账号)
- TapTap(游戏专属平台)
9.7 版本更新流程
准备新版本
- 修改代码/资源
- 更新版本号(versionName和versionCode)
- 更新更新日志
构建新版本
- 按照9.2-9.3步骤重新构建
- 确保版本号大于当前线上版本
生成热更新包
测试
发布
9.8 常见问题
问题1:签名失败
- 检查keystore文件路径是否正确
- 检查密码是否正确
- 确保alias存在
问题2:SDK初始化失败
- 检查AppID、AppKey等配置参数
- 检查网络权限配置
- 查看logcat日志排查具体原因
问题3:资源加载失败
- 检查资源是否正确打包
- 检查资源路径是否正确
- 检查Bundle配置
问题4:热更新失败
- 检查CDN地址是否可访问
- 检查版本号是否正确递增
- 检查manifest文件是否生成
问题5:应用闪退
- 查看logcat日志
- 检查必要的权限是否声明
- 检查native代码是否正确
9.9 性能优化建议
资源优化
- 压缩图片资源
- 使用纹理压缩格式(ETC2、ASTC)
- 合理使用图集(Atlas)
代码优化
包体积优化
网络优化
- 使用WebSocket保持连接
- 合理设置网络超时时间
- 实现断线重连机制
10. 附录
10.1 相关文档链接
10.2 技术栈
- 游戏引擎: Cocos Creator 3.8.7
- 开发语言: TypeScript
- 开发框架: XForge
- 网络协议: WebSocket + HTTP/HTTPS
- 热更新: oops-plugin-hot-update
- 配置工具: Excel转JSON
10.3 项目结构
luckDef/
├── assets/ # 游戏资源和代码
│ ├── app/ # 核心代码
│ │ ├── net/ # 网络模块
│ │ ├── native-sdk/ # 原生SDK封装
│ │ ├── tables/ # 配置表
│ │ └── ...
│ ├── app-bundle/ # Bundle资源
│ └── resources/ # 资源文件
├── native/ # 原生代码
│ └── engine/android/ # Android原生代码
├── excel/ # Excel配置表
├── oops_framework_remote/ # 热更新资源
├── build/ # 构建产物
└── package.json # 项目配置
10.4 联系方式
如有问题,请联系项目开发团队
EMail: lishupeng@msvc.com.cn
文档版本: 1.0
最后更新: 2025-10-27
维护者: 沧海笑游戏