今天主要纪录最近对 QQPlay(玩一玩)打包的纪录. 然后这里只是纪录我目前使用的引擎(Cocos Creator version 2.x.x),精力有限.

QQPlay官方文档

大纲

1. 玩一玩包体中缺少`Utils`文件
2. 怎么读取最新的 bricks 引擎
3. 解决 xcode 打包到手机过程中出现的错误
4. 空泛讲解整个玩一玩上传流程
5. 避免上传后台而实时跟新 android 机里面的逻辑为最新
6. 实现厘米秀大部分功能
7. 关于获取每个游戏用户的 openkey 的获取问题

未完待续
厘米秀游戏性能审核标准
自建后台 前后端需要注意什么
审核前游戏应该准备些什么
玩一玩后台需要的一些配置

玩一玩包体中缺少Utils文件

在你上传厘米秀后台的时候如果只是单纯使用Cocos Creator 发布QQPlay 平台的时候,在 ~/build/qqplay/libs/element/ 这个路径下缺少一个 Utils.js 的脚本文件 但是引擎团队在2.x.x 版本中 还一直没有修复这个问题,原因在 ~/build/qqplay/libs/qqplay-adapter.js 中又引入过这个文件.

在论坛中搜到的解决方案是 将 qqplay-adapter.js 脚本中的这一行代码注释掉,这个在前期没用到对应功能的时候不会报错,但是等用到Utils.js 里面的功能是就会发现会再次报错.

报错的原因:加载远程图片会使用 libs/element/HTMLImageElement.js 脚本

解决方案:

  1. 使用CocosCreator(1.x.x) 版本随便打包个 QQPlay 平台,将其中的Utils.js粘到当前工程中 的 ~/build/qqplay/libs/element/ 目录中
  2. 修改Utils.js中对其他库的引用路径(CocosCreator(2.x.x)中将第三方引来的脚本归类到~build/qqplay/libs/other/这个目录下了), 修改的点如下:
  3. 建立一个和 ~/build 同级的目录(build-templates) 将上一步的 Utils.js文件也复制一份到 ~/build-templates/qqplay/libs/element/ 中, 类似于下面的这样 (这样做的目的是可以每次构建的时候,打的玩一玩的包都含有 Utils.js 脚本);
Utils.js.txt

1.9.3 打包的 Utils.js 脚本 可以参考 这里面我已经修改过了,可以直接使用.

怎么读取最新的 bricks 引擎

下面这是引擎团队的说法 和 玩一玩官方文档的说法

玩一玩 官方说法

需要科学上网
bitbucket官网
解决方案:

  1. 登录官网注册账号
  2. 将自己的账号发给 `hudong@tencent.com邮件的主题写引擎申请权限`
    等待大概 4 天左右 腾讯的相关工作人员会给你这个账号添加权限,你就可以试试获取最新的xcode工程

10.25 玩一玩官网 给出了 bricks 引擎的下载地址,也就是说你可以不用申请了
bricks XCode 工程
bricks 下载页面

解决 xcode 打包到手机过程中出现的错误

这里主要是 苹果签名 出的错误
这里面 会有 详细的 解决方案(我不想重复造轮子)
解决打包签名报错问题
他这里面用的是 将 com.tencent.PublicBrickEngineGame 修改为 com.test.PublicBrickEngineGame 你会发现还是报错 ,,, 那就将 test 修改为被人很难想到的名字就行了 ,,, 然后 try again

空泛讲解整个玩一玩上传流程

  1. 引擎打包 QQPlay 平台的包
  2. 修复引擎包内缺少的文件 gameConfig.json 里面需要的填充的内容如下 gameConfig.json|官方解释地址
  3. 在你调试期间可以先 不把 构建面板的 MD5 开始 , 这样你可以,先将 gameConfig.json 放入到 ~/build-templates/qqplay/ 中 ,,, 测试完毕后将 MD5 开启, 然后打正式包的时候需要手动填充 gameConfig.json 文件.
    gameConfig.json 内容如下:

  4. 在后台创建测试版

避免上传后台而实时跟新 android 机里面的逻辑为最新

参考文档
这个讲解的也很详细 ,,, 我就不重复造轮子了.

我到现在都还不知道怎么看 log 哪位大神知道 可以在下面评论 我加 QQ ,, 请教请教.

实现厘米秀大部分功能

参考文章
官方文档
程序员主要是一些细节,,,可能会困扰你,这里我就不说啥了,,,官方也提供的挺详细的,,,你也可以借鉴.
QQPlay.js.txt
我这里在提供一份我封装好的 里面(获取 openId, 获取QQ名字, 获取QQ头像地址, 分数上传, 获取好友分数排行榜, 各个时间点的绑定, 公众号跳转, 分享, 分享链接, 生成快捷方式传参, 储存/读取个人云端数据,存储游戏数据到本地,获取openkey,创建 banner广告, 创建激励视频广告, Post 请求)
还有一些功能 未完成(暂时项目没有需求就写, 后面会持续更新);

关于获取每个游戏用户的 openkey 的获取问题

获取 openkey 是验证当前用户是否是手Q环境,,,避免有些模拟请求,,,使其更安全.

这个 openkey 比较的坑,,, 这是官方文档

你会发现 这里面 没啥 这个 game.json 是个啥东西,,, needOpenkey 又是个啥 ,,, 然后点击游戏上架章节 嗯哼 Not Found ,,, 于是 又去找了找,

你会发现这里还有点提示信息 到最后也没说 到底要放在哪里?

解决方案:
在和gameConfig.json 同目录里面 创建一个 game.json 文件 里面内容为

1
2
3
{
"needOpenkey": 1
}

然后随同到包内.

然后就是调用

1
2
3
4
5
BK.QQ.fetchOpenKey(function (errCode, cmd, data) {
if (errCode == 0) {
var openKey = data.openKey;
}
});

这个借口去获取用户的 openkey

最后更新: 2019年08月14日 11:22

原始链接: https://leng521.top/posts/dd666e1a/