Egret社区

发布最小原生包

2014-11-12 16:47
1344224
本帖最后由 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 银子)
分享到 :
11 人收藏
回复我的帖子时请点击“回复”按钮,要不我怕会漏掉大家的回复信息
邮箱:jerry.lin@egret.com

24 个回复

倒序浏览
yjtx  官方团队 | 2014-11-12 18:38:15
7yue  官方团队 | 2014-11-13 12:14:59
这个可以放入大教程栏目了。
xsstomy  渐入佳境 | 2014-11-14 09:21:35
顶顶顶
csujin  圆转纯熟 | 2014-11-14 14:40:16
貌似压缩包坏了解压不出来
egret-Jerry  官方团队 | 2014-11-14 15:02:31
csujin 发表于 2014-11-14 14:40
貌似压缩包坏了解压不出来

貌似是包太大了导致的,我重新上传了一份,你试试吧
csujin  圆转纯熟 | 2014-11-14 15:21:21
egret-Jerry 发表于 2014-11-14 15:02
貌似是包太大了导致的,我重新上传了一份,你试试吧

好的,谢谢
jonnny  登堂入室 | 2014-11-15 20:03:53
楼主最小apk多大可否在帖子中说明一下
egret-Jerry  官方团队 | 2014-11-17 10:10:15
jonnny 发表于 2014-11-15 20:03
楼主最小apk多大可否在帖子中说明一下

我这个demo最后apk是2.5MB
小米粒儿  初学乍练 | 2014-11-17 11:55:49
顶顶顶~~!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部