1.0.4 • Published 2 years ago

creatorpacker v1.0.4

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

CocosCreator自动打包工具

开发环境及语言:nodejs+TypeScript
使用步骤:
  • 命令行安装必备依赖模块npm install
  • 首次使用需要编译打包工具 tsc --build
  • 拷贝当前目录下的pack.config.yml配置文件到需要打包的工程的settings文件夹目录下
  • 修改CocosCreator工程settings文件夹下pack.config.yml里的相关配置
  • 执行打包命令 node ./build/app.js -p 项目路径 -c 打包的渠道平台
目前支持打包渠道
  1. 微信小游戏 可自动上传到后台
  2. 字节跳动 可自动上传到后台
  3. oppo/vivo/小米小游戏 打包出rpk文件
  4. 快手小游戏 打包出zip压缩包,不支持上传后台,快手没提供对应ci工具
  5. 百度小游戏 可自动上传到后台
  6. h5 自动提交到服务器
  7. 原生安卓等渠道 打包出apk

命令详解

Options:

-p,--path 打包的项目路径(必填)

-c,--channel 打包对应的渠道(必填)

-d,--debug 是否是debug版本(可选,默认false,目前是对特定项目有用,可忽略)

-v 打包的版本号(可选,格式x.x.x,如果传入则以传入版本号为准,否则以pack.config.yml与本地缓存的pack.config.json配置检测比较取版本号最大值为准)

-h,--help 帮助说明(可选)

-t 小游戏后台上传描述,字节微信等

-b 是否是构建bundle(仅用于安卓)//2021-08-11更新

-bn 自家聚合实名认证BMS名称(仅用于安卓)//2021-10-26更新

-bv 自家聚合实名认证BMS版本(仅用于安卓)//2021-10-26更新

打包配置文件pack.config.yml相关重要参数说明

  1. enginePath-CocosCreator应用路径
  2. engineVar-当前CocosCreator的版本号 ,用于工具能够根据版本号做特定兼容
  3. customJsEnginePath-自定义engine路径,如果有定制js引擎代码的需要添加对应路径
  4. customCppEnginePath-自定义cocos2d-x路径,如果有定制c++层引擎代码的需要添加对应路径
  5. gitBashPath-git-bash路径,目前主要用于快手小游戏执行打包shell脚本
  6. keyStoreInfo-android签名信息
    1. keystorePath-密钥文件路径
    2. keystorePassword-文件密码
    3. keystoreAlias-别名
    4. keystoreAliasPassword-别名密码
  7. basePlatforms-基本渠道参数
    1. version-版本号
    2. isNative-是否是原生渠道
    3. md5Cache-打包是否需要md5 cache
    4. buildPath-构建目录
    5. remoteDir-远程资源本地目录
  8. platforms-渠道配置信息
    1. bytedance
      • account-登陆字节的账号,注:不要用手机登陆,因为需要验证码
      • password-登陆字节的密码
    2. oppo-其他快游戏类似 vivo xiaomi
      • privatePath,certificatePath-需要的打包相关证书文件
      • icon-rpk的logo文件路径
    3. kwai
      • toolsDir-快手提供的打包工具目录路径
    4. baidu
      • privateKey-百度打包需要传入的accessToken
    5. wechatgame
      • privatePath-微信上传需要的私钥文件路径,需要配置可上传白名单或者关闭白名单限制才能上传,详细可以看看官方文档
    6. android相关
      • packageName-apk包名
      • template-构建工程的模板 defalut | link
      • apiLevel-使用的android sdk版本

android打包相关说明

CocosCreator构建生成安卓工程之后是通过执行proj.android-studio目录下的gradlew.bat批处理文件打包的

目前默认是通过传入参数assembleRelease生成Release包,如果需要打Debug包可以修改为assembleDebug,打包App Bundle则传入bundleRelease生成Release包

  • 包名修改:目前CocosCreator构建工程包默认采用了项目local|settings/builder.json下包名参数直接修改因为后期构建安卓工程后需要再根据自定义打包配置再修改build.gradle配置

    • // 读取build.gradle文件
      const abgPath = path.join(this._androidDir, 'app', 'build.gradle');
      let gradleData = readFileSync(abgPath).toString();
      // 匹配包名
      let matcher1 = /applicationId[ ]+\"[a-zA-Z0-9_.]+\"/;
      // 使用pack.config.yml配置的渠道包名修改
      gradleData = gradleData.replace(matcher1, `applicationId "${channelInfo.packageName}"`);
      writeFileSync(abgPath, gradleData);
  • versionCode,versionName修改,build.gradle修改对应配置

    • android {
      	// ...
      	defaultConfig {
              versionCode 100
              versionName "1.2.6"
              if (project.hasProperty('VERSION_CODE')) {
                  versionCode Integer.parseInt(VERSION_CODE)
              }
              if (project.hasProperty('VERSION_NAME')) {
                  versionName VERSION_NAME
              }
          }
          // ...
      }
    • 通过执行gradlew.bat批处理执行的时候传入参数 -PVERSION_CODE=110 -PVERSION_NAME=1.1.0 添加gradle属性即可(-P是添加参数,想添加啥就啥,注意-P与参数名是连在一起的)

  • 输出apk路径修改:gradlew.bat批处理传入参数 -POUT_PUT_DIR通过修改build.gradle配置中,如下修改目录路径以及apk文件名(注:如果出现打包异常语法有问题,可能是gradle版本导致的)

    • android.applicationVariants.all { variant ->
      	// ...
          variant.outputs.all {
              if(project.hasProperty("OUT_PUT_DIR")){
                  variant.getPackageApplication().outputDirectory = new File(OUT_PUT_DIR);
              }
              def outputFile = outputFileName
              if(outputFile != null && outputFile.endsWith('.apk')){
                  if (android.defaultConfig.versionName != null) {
                      outputFileName = outputFileName.replace(".apk", "-${android.defaultConfig.versionName}.apk")
                  }
              }
      
          }
      }

    输出bundle路径修改:基本同apk,在build.gradle文件下新增(2021-08-11更新)

    tasks.whenTaskAdded { task ->
        if (task.name.startsWith("bundleRelease")) {//如果该任务是bundleRelease
            def renameTaskName = "rename${task.name.capitalize()}Aab"
            def flavor = task.name.substring("bundle".length()).uncapitalize()
            def destnadir = "${buildDir}/outputs/bundle/${flavor}/"
            if(project.hasProperty("OUT_PUT_DIR")) {
                destnadir = OUT_PUT_DIR
            }
            tasks.create(renameTaskName, Copy) {//创建一个复制任务
                def path = "${buildDir}/outputs/bundle/${flavor}/"
                from(path)
                include "${project.name}-release.aab"
                destinationDir file(destnadir)
                rename "${project.name}-release.aab", "${project.name}-release-${android.defaultConfig.versionName}.aab"
            }
    
            task.finalizedBy(renameTaskName)
        }
    }

jenkins参数化构建部署相关说明(主机是windows系统为例)

  1. 下载jenkins window系统版本安装

  2. 安装过程会提示推荐安装的jenkins插件,直接默认安装即可

  3. 创建管理员用户

  4. Manage Jenkins->SystemConfiguration->Manage Plugins 安装Extended Choice Parameter Plug-In插件,gitlab没安装的话也安装一下gitlab插件

  5. Manage Jenkins->SystemConfiguration->Manage Nodes and Clouds 新建一个固定节点(Cocos打包必须要在Agent模式下才可以

    1. npm.io
    2. npm.io
    3. npm.io
    4. npm.io输入节点名称
    5. npm.io填写远程工作目录,例如E:\test,标签是该个节点另外一个标识名称
    6. npm.io选择只构建跟该节点标签匹配的job
    7. npm.io
    8. npm.io新建完成点击Launch启动该节点
  6. 新建Item->创建一个自由风格的项目,添加相关参数,配置源码管理提供gitlab,添加构建命令

    1. npm.io
    2. npm.io
    3. npm.io丢弃旧的构建,构建log配置,不然会越来越多占用空间
    4. npm.io参数配置
    5. npm.io
    6. npm.io
    7. npm.io
    8. npm.io
    9. npm.io
  7. 后面选择对应渠道,输入版本号,点击构建即可

2021-08-11更新

1.新增选择构建安卓App Bundle包,用于上传谷歌商店

2021-10-26

2.新增安卓自家聚合sdk修改AndroidManifest配置中的bms版本号以及bms位置表示