参考文档:OPPO小游戏打包官方文档
前提
- 安装了 node 环境,建议安装 8.x 稳定版本 [node官网:https://nodejs.org/en/]
- 开发 Cocos Creator 游戏,需要升级到2.0.6及以上版本
- 开发 Laya 游戏,需要 laya air 使用1.7.19或1.7.20版本(暂不支持 Laya2.0)
- 当前
manifest.json
中的平台版本号必须是 1031
安装和配置
- 解压
quickgame-toolkit
,切换到解压目录下,并且安装依赖
# 进入解压目录
cd quickgame-toolkit
# 安装项目的依赖
npm install
-
将
quickgame-toolkit
下的"/lib/bin"目录加入系统变量中(例如:/path/quickgame-toolkit/lib/bin,其中"/path/quickgame-toolkit"是解压安装的目录) -
运行
quickgame -V
能够正确显示版本号表示安装成功 -
在规范的 rpk 目录下,生成rpk
# 打包用于测试的rpk
quickgame pack
# 打包release签名的rpk
quickgame pack release
打包Egret开
发的游戏
- 编译项目,发布成 微信小游戏,会生成<项目名称>_wxgame 目录
- 回到原 egret 工程项目根目录下,通过命令行 egret publish --target wxgame 发布项目
#注意:如果已经发布好的微信小游戏,只需要拷贝一份出来,将名字命名为:<项目名称>_wxgame)
- 拷贝 egret.qggame.js 库到生成的根目录下
- 修改
game.js
,将require('./egret.wxgame.js')
修改为require('./egret.qggame.js')
,注释代码,如下所示
// require('./weapp-adapter.js');
// require('./platform.js');
require('./manifest.js');
require('./egret.qggame.js');
// if(window.RES && RES.processor) {
// require('./library/image.js');
// require('./library/text.js');
// require('./library/sound.js');
// require('./library/binary.js');
// }
#注意:这里有个特殊要说明的,oppo的
quickgame
没法指定源目录,只能指定发布目录,所以项目的目录结果需要特殊说明一下,oppo的quickgame
指令在执行时,会找它当前目录名a
的上级目录的a_wxgame
作为他的源,所以命令执行是在a目录下,而对应的微信小游戏项目目录,需要跟a
同一个目录。 在没有指定发布目录时,发布目录a_quickgame
也是跟a
同一个目录。目录结构如下:
|-
|-a // quickgame egret 的执行目录
|-a_wxgame //微信小游戏工程
|-a_quickgame //最后发布的oppo工程
- 在
egret
工程项目下运行
quickgame egret
默认会在项目同一级目录生成 <项目名称>_quickgame 文件夹; 如果发布的时候修改了游戏的发布目录,需要手动指定游戏的发布文件夹:
quickgame egret --pub_dir ../myrelease
则会在 myrelease 同一级生成<项目名称>_quickgame 文件夹
- 在项目目录下产生了
|-<projectname>_quickgame
|-dist //最终的rpk包
|-com.demo.rpk //rpk包
|-sign //签名
|-debug //测试证书,默认生成,开发者也可以自己修改
|-certificate.pem //证书
|-private.pem //私钥
|-release //正式证书,开发者自己添加
|-certificate.pem //证书
|-private.pem //私钥
|-main.js //项目入口文件
|-logo.png //桌面图标(正方形),开发者自己替换
|-manifest.json //可以配置包名、版本号、授权、图标位置、横竖屏等
|-js //游戏相关逻辑代码
|-egret.qggame.js //快应用前端适配库
|-resource //游戏资源目录
发布
开发完成后,我们发布前,需要使用正式的签名和文件来签名
- 增加 release 签名
开发者需要自己添加证书,其中 debug 下面的证书只供调试使用,开发者需要通过 openssl 命令等工具生成签名文件 private.pem、certificate.pem
openssl req -newkey rsa:2048 -nodes -keyout private.pem -x509 -days 3650 -out certificate.pem
#注意:openssl工具在linux或IOS下终端直接打开,windows下需要安装openssl工具并且配置系统环境变量【http://slproweb.com/products/Win32OpenSSL.html】
#例子如下:
#输入命令
openssl req -newkey rsa:2048 -nodes -keyout private.pem -x509 -days 3650 -out certificate.pem
#结果
Generating a 2048 bit RSA private key
................................................................................
................................................................................
.....+++
............................+++
writing new private key to 'private.pem'
-----
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', The field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:GuangDong '备注:此处省份,请根据实际填写'
Locality Name (eg, city) []:Shenzhen'备注:此处市,请根据实际填写'
Organization Name (eg, company) [Internet Widgits Pty Ltd]:OPPO'备注:此处为组织或公司,请根据实际填写'
Organizational Unit Name (eg, section) []:OPPO '备注:此处为部门,请根据实际填写'
Common Name (e.g. server FQDN or YOUR name) []:Demo '备注:此处为通用名,请根据实际填写'
Email Address []:demo@oppo.com '备注:此处为Email,请根据实际填写'
- 在工程的
quickgame
的sign
目录下创建release
目录,将私钥文件private.pem
和证书文件certificate.pem
拷贝进去 - 修改后在游戏项目(如:cocos creator、laya工程项目、egret生成目录)下重新执行命令(如:
quickgame cocos release
或quickgame laya release
或quickgame egret release
)即可重新生成release
签名的游戏包
manifest.json 文件修改
用于游戏的配置,每次修改后,需要重新打包。
{
// 游戏包名
"package": "com.quickgame.demo",
// 游戏名
"name": "QuickgameDemo",
// 游戏版本
"versionName": "1.0.0",
// 游戏版本
"versionCode": "1",
// 平台版本号
"minPlatformVersion": "1031",
// 桌面图标,正方形,默认是 108x108 尺寸,注意替换成自己游戏的 icon
"icon": "/logo.png",
// 设备方向,包含landscape(横屏)和portrait(竖屏)
"orientation": "landscape",
// 分包功能,有分包时才需要,可选字段
"subpackages": [
{
"name": "stage1",
"root": "stage1/" // 可以指定一个目录,目录下所有js将会统一打包
},
{
"name": "stage2",
"root": "stage2.js" // 也可以指定一个 JS 文件
}
]
}
调试
-
准备好游戏 rpk
rpk 由 quickgame-toolkit 打包得到 -
安装 runtime.apk 包到 OPPO 手机上
OPPO 小游戏调试器注意:安装出现失败,先把已安装的“快应用”卸载了再进行安装(快应用是系统进程,需要点击显示系统进程)
-
新建目录
- 手机上 sdcard 上新建目录
games/
,若目录已存在,忽略这一步 - 将准备好的 rpk 拷贝到手机 sdcard 的
games/
中
- 手机上 sdcard 上新建目录
-
启动 OPPO 小游戏
- 点击快应用图标
- 点击对应的 OPPO 小游戏 tab 下的游戏即可看到效果
注意:相同游戏 rpk 更新时,需要去“快应用 -> 后右上角的三个点->清除数据”进行清除数据操作
在规范的 rpk <项目名称>_quickgame
目录下,生成rpk
- 打包用于测试的 rpk
quickgame pack
- 打包 release 签名的 rpk
quickgame pack release
注:oppo调试需要借鉴android的logcat来调试,关键字:jswrapper
或者 包名