解决Jenkins无法编译Egret5.0项目的问题

原创 2017年07月20日 13:24:19

Egret4.0升级Egret5.0导致Jenkins无法编译项目

项目升级到Egret5.0,同时也把Egret的引擎工具更换为EgretLauncher,结果出现问题,原来跑得好好Jenkins,突然无法进行编译了。(以前4.0的时候是好好的)。花费了一些功夫,追踪了Egret引擎的相关编译,最终才找到解决办法。现在把这些给记录下来,主要也是方便自己升级或者降级引擎时可以查看。

Jenkins错误表现

直接查看编译错误信息,发现了下面的错误信息

C:\Program Files (x86)\Jenkins\workspace\pal_dev>C:\Users\sodaChen\AppData\Roaming\npm\egret.cmd clean 
C:\Program Files (x86)\Egret\EgretLauncher\resources\app\engine\win\selector.js:86
        var isUsingDefault = requestVersion == defaultVersion.version;
                                                             ^

TypeError: Cannot read property 'version' of null
    at entry (C:\Program Files (x86)\Egret\EgretLauncher\resources\app\engine\win\selector.js:86:62)
    at Object.<anonymous> (C:\Program Files (x86)\Egret\EgretLauncher\resources\app\engine\win\selector.js:360:1)
    at Module._compile (module.js:541:32)
    at Object.Module._extensions..js (module.js:550:10)
    at Module.load (module.js:458:32)
    at tryModuleLoad (module.js:417:12)
    at Function.Module._load (module.js:409:3)
    at Module.runMain (module.js:575:10)
    at run (bootstrap_node.js:352:7)
    at startup (bootstrap_node.js:144:9)
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE

既然有代码报错,那么就追踪相关的代码,从

C:\Program Files (x86)\Egret\EgretLauncher\resources\app\engine\win\selector.js

这个js文件开始追踪。发现这段代码获取egret系统路径有问题

function getAppDataPath() {
    switch (process.platform) {
        case 'win32': return process.env['APPDATA'] || path.join(process.env['USERPROFILE'], 'AppData', 'Roaming');
        case 'darwin': return path.join(os.homedir(), 'Library', 'Application Support');
        case 'linux': return process.env['XDG_CONFIG_HOME'] || path.join(os.homedir(), '.config');
        default: throw new Error('Platform not supported');
    }
}

跟我们在cmd下面输入egret build获取的引擎配置路径不一样。最终发现是引擎的位置读取错了。最终发现是引擎的位置读取错了。读成这样了:

C:\Windows\system32\config\systemprofile\AppData\Roaming\Egret\engine

实际引擎的路径是

C:\Users\sodaChen\AppData\Roaming\Egret\engine
怀疑是Jenkins里面有改变环境变量(也有可能是白鹭自己设置环境变量有问题,没去深入研究)

解决方法是在EgretLauncher的安装路径下修改这个js文件

C:\Program Files (x86)\Egret\EgretLauncher\resources\app\engine\egret.js

强制把enginePath这个变量设置为自己的引起路径

enginePath = "C:\\Users\\linlong\\AppData\\Roaming\\Egret\\engine\\"

它会读取这个配置文件config.json,然后这个配置文件有记录你的使用的引擎版本号
如果你有修改自定义引擎位置,那么记得维护这个配置文件
比方说我的最新配置:

C:\Program Files (x86)\Jenkins\workspace\egret-core

最终可以正常编译了,有个麻烦的地方就每次升级egret必须再次egret.js文件。

版权声明:本文为博主原创文章,转载必须声明出处和作者。地址:http://blog.csdn.net/sujun10 作者:弃天笑

Egret)引擎工作原理

Egret engine 使用 nodejs 来编译项目,为了避免对系统的依赖,所以node是放在引擎的安装目录中的。 windows 下 在 C:\Program Files\Egret\Egr...

创建和调试Egret5.0的WebAssembly项目

一、Egret5.0Egret升级到5.0了,增加了他们说的黑科技:WebAssembly。但是直接使用官方创建5.0的WebAssembly项目例子,竟然无法跑起来。结合了一下4.1.0的版本以及5...
  • sujun10
  • sujun10
  • 2017年07月04日 00:35
  • 1439

Linphone android 最新版编译(解决android5.0以上无法运行问题)

Linphone android 编译,解决android5.0版本无法运行问题。

jenkins远程部署play framework项目时遇到的问题及解决办法

这篇不讲解如何用Jenkins进行远程部署和远程启动项目,只是讲解遇到的问题。最近公司要求让我把一个直播的项目,利用Jenkins来实现自动化部署。 项目目录结构是这样(项目根目录weblive-t...

解决.VS2012+EF5.0开发的网站在window server2003上无法部署的问题

(一)前  言                                                                    最近一个月使用VS2012(默认框架是.ne...

Android 5.0 Binder编译问题及解决方案

最近在把Hook binder通信的ioctl函数部分移植到android5.0时,发现在源码编译环境下binder通信部分默认编译为64位,因而在编译时需加入 #define BINDER_IPC_...

升级到安卓5.0后,和包提示:“检测到您的手机或sim卡不完全支持和包业务,部分NFC相关功能将无法正常使用”的问题解决办法

一、问题描述 系统版本:Android 5.0 手机型号:三星note3 sim卡:移动的NFC-SIM卡 和包版本:4.2.71 问题现象: 1. 升级到安卓5.0前一切正常,可以使用和包为自己手...

Egret5.0使用FairyGUI教程(各种坑点)

总结一下Egret5.0中使用FairyGUI的各种坑

解决Jenkins构建Android app无法找到SDK路径问题

默认Jenkins没有设置Android SDK环境的选项,所以构建App时会报错。 报错信息如下:01:52:21.861 [INFO] [org.gradle.api.Project] Pars...
  • lusyoe
  • lusyoe
  • 2016年10月19日 02:20
  • 2844

Jenkins搭建Egret H5开发的自动化构建(持续集成)

一、H5游戏开发进行H5游戏开发,不仅仅是开发这边事情,还会涉及到美术、策划、以及测试。所以必须为他们也搭建一些运行程序,以便可以及时地了解和测试到最新的开发进度。同时游戏本身也会分成诸多版本,例如测...
  • sujun10
  • sujun10
  • 2017年07月16日 23:05
  • 1427
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决Jenkins无法编译Egret5.0项目的问题
举报原因:
原因补充:

(最多只允许输入30个字)