本帖最后由 xsstomy 于 2015-3-17 22:08 编辑
≈最新的1.6.0版本教程1.6.0打包原生包
以下方法适用于1.5.1版本,最近很多人在问,egret在打包原生的过程中,可否使用publish的代码呢?这个答案一定是可以的!下面我就将具体的流程阐述一下。
首先,我们在执行create_app命令之后,会创建一个原生项目,同时h5项目中的egretProperties.json会有所改动,我们打开这个文件会发现support_path属性列出了一个路径。
[mw_shl_code=javascript,true]{
"document_class": "Main",
"modules": [
{
"name": "core"
}
],
"native": {
"path_ignore": ["src","release"],
"support_path": [
"/Library/WebServer/Documents/egret/native/examples/proj.android/assets/egret-game"
]
},
"egret_version": "1.1.2"
}[/mw_shl_code]
记下来这个路径,之后会用到。这个路径的作用是,在我们之后执行egret build -e --runtime native的时候将编译好的文件直接放到support_path所指定的路径,这个路径也就是原生项目的游戏资源路径。既然我们要发布加密后的代码,那么肯定是不能要这个路径的,我们仍旧把它设置为空字符串。
[mw_shl_code=applescript,true]{
"document_class": "Main",
"modules": [
{
"name": "core"
}
],
"native": {
"path_ignore": ["src","release"],
"support_path": [
""
]
},
"egret_version": "1.1.2"
}[/mw_shl_code]
之后,我们需要改一下native_loader.js。我们打开这个文件会找到下面这段代码:
[mw_shl_code=javascript,true]require("bin-debug/lib/egret_file_list.js");
require("bin-debug/src/game_file_list.js");
for (var key in egret_file_list) {
var src = "libs/" + egret_file_list[key];
require(src);
}
for (var key in game_file_list) {
var src = "bin-debug/src/" + game_file_list[key];
require(src);
}[/mw_shl_code]
这段代码很好理解,从egret_file_list.js和game_file_list.js中读取到所有游戏用到的js文件。既然我们是要加密后的代码,那么这段代码明显是不需要的,我们把这段代码删掉,并在同样位置插入下面这段代码。
[mw_shl_code=javascript,true]require("launcher/game-min-native.js");[/mw_shl_code]
显而易见了,这个文件应该就是我们加密后所有的js代码了~到这里我们所有的准备工作都已经完成了。
现在让我们来发布一份加密后的原生代码出来:进入到h5项目目录,执行egret build -e --runtime native。执行之后会编译一份native代码在h5项目,之后执行egret publish --runtime native。我们会发现在h5项目中的release文件夹中出现了publish之后的文件,拷贝release文件夹内的launcher和resource文件夹到前面记下的support_path文件夹下。
之后我们的原生项目就可以正常的跑起来了~然后我们再要发布原生项目的时候就只需要执行以下几步就可以了:
进入到h5项目目录 执行egret build -e --runtime native 执行egret publish --runtime native 拷贝release文件夹内的launcher和resource文件夹到前面记下的support_path文件夹下
如果觉得比较繁琐可以写个小脚本来完成这几步
下面附上我做的demo包,随便建一个egret安卓项目,然后替换项目中的相应内容即可
egret-game.zip
(116.38 KB, 下载次数: 52, 售价: 1 银子)
|