基于Egret的OPPO小游戏接入

参考文档: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

安装和配置

  1. 解压 quickgame-toolkit,切换到解压目录下,并且安装依赖
 # 进入解压目录
 cd quickgame-toolkit
 # 安装项目的依赖
 npm install
  1. quickgame-toolkit 下的"/lib/bin"目录加入系统变量中(例如:/path/quickgame-toolkit/lib/bin,其中"/path/quickgame-toolkit"是解压安装的目录)

  2. 运行 quickgame -V 能够正确显示版本号表示安装成功

  3. 在规范的 rpk 目录下,生成rpk

 # 打包用于测试的rpk
 quickgame pack
 # 打包release签名的rpk
 quickgame pack release

打包Egret开

发的游戏

  1. 编译项目,发布成 微信小游戏,会生成<项目名称>_wxgame 目录
  2. 回到原 egret 工程项目根目录下,通过命令行 egret publish --target wxgame 发布项目

    #注意:如果已经发布好的微信小游戏,只需要拷贝一份出来,将名字命名为:<项目名称>_wxgame)

  3. 拷贝 egret.qggame.js 库到生成的根目录下
  4. 修改 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工程
  1. egret 工程项目下运行
 quickgame egret

默认会在项目同一级目录生成 <项目名称>_quickgame 文件夹; 如果发布的时候修改了游戏的发布目录,需要手动指定游戏的发布文件夹:

 quickgame egret --pub_dir ../myrelease

则会在 myrelease 同一级生成<项目名称>_quickgame 文件夹

  1. 在项目目录下产生了
|-_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             //游戏资源目录

发布

开发完成后,我们发布前,需要使用正式的签名和文件来签名

  1. 增加 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 []:[email protected] '备注:此处为Email,请根据实际填写'
  1. 在工程的 quickgamesign 目录下创建 release 目录,将私钥文件 private.pem 和证书文件 certificate.pem 拷贝进去
  2. 修改后在游戏项目(如:cocos creator、laya工程项目、egret生成目录)下重新执行命令(如:quickgame cocos releasequickgame laya releasequickgame 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 文件
        }
    ]
}

调试

  1. 准备好游戏 rpk
    rpk 由 quickgame-toolkit 打包得到

  2. 安装 runtime.apk 包到 OPPO 手机上
    OPPO 小游戏调试器

    注意:安装出现失败,先把已安装的“快应用”卸载了再进行安装(快应用是系统进程,需要点击显示系统进程)

  3. 新建目录

    • 手机上 sdcard 上新建目录 games/,若目录已存在,忽略这一步
    • 将准备好的 rpk 拷贝到手机 sdcard 的 games/
  4. 启动 OPPO 小游戏

    • 点击快应用图标
    • 点击对应的 OPPO 小游戏 tab 下的游戏即可看到效果

    注意:相同游戏 rpk 更新时,需要去“快应用 -> 后右上角的三个点->清除数据”进行清除数据操作

在规范的 rpk <项目名称>_quickgame目录下,生成rpk

  • 打包用于测试的 rpk
    quickgame pack
  • 打包 release 签名的 rpk
    quickgame pack release

注:oppo调试需要借鉴android的logcat来调试,关键字:jswrapper 或者 包名

你可能感兴趣的:(基于Egret的小游戏接入)