egret(白鹭引擎)Android Studio发布Android项目发布设置
            
            
                项目发布设置使用说明
此文档旨在帮助用户顺利的完成项目打包发布,解决发布过程中可能遇到的问题,并最终完成发布工程的个性化配置和功能接入,文档分为以下几个部分:
- 发布设置前的准备工作
 - 项目发布配置
 - 发布工程的个性化配置
 - JS和原生的通信接入
 - 运行时error事件和state事件处理方法
 - 添加loading界面
 
发布设置前的准备工作
- 安装最新版本的launcher
 - 确认引擎版本
- 下载的引擎版本必须为5.1.6及以上
 - 在launcher中的引擎页选择下载
 
 - 安装Android Studio
- 最低版本: 3.0或以上
 - 后续需要在Android Studio中完成发布项目的修改和功能接入
 
 
项目发布配置
1. 创建项目
- launcher项目页中,点击创建项目,填入项目名称,并选择引擎版本为5.1.6(或以上),点击创建按钮。
 
此文档不涉及具体项目功能,可以关闭 Egret Wing窗口。
2. 发布配置
- 在launcher的项目页中找到新创建的项目,点击该项目下的发布设置按钮。

 - 点击左侧的Android按钮,然后在右侧页面中,输入应用名称,填写新的应用包名,点击确定。
 - 新弹出的窗口中选择点击打开文件夹按钮。
 
发布工程的个性化配置
使用Android Studio打开项目
修改Gradle配置
查看在线文档Android Gradle 配置FAQ
在project Structure中配置SDK和NDK的合理路径
个性化设置
- 修改游戏地址:将函数
nativeAndroid.initialize的参数替换为当前游戏的地址。 
需要注意,如果工程的assets目录下存在game文件,那么此处填写的游戏必须和game文件中的游戏保持一致,否则会出现问题。
- 控制FPS面板的显示:修改
nativeAndroid.config.showFPS = true/false;。true为显示,false为隐藏。 - 控制log在屏幕上的显示时间:修改
nativeAndroid.config.fpsLogTime = 30;,改为-1时是永久显示。 - 是否禁用核心渲染驱动:修改
nativeAndroid.config.disableNativeRender = false/true。false为启用核心渲染驱动,true为禁用核心渲染驱动。 - 是否清理缓存:修改
nativeAndroid.config.clearCache = false/true;。false为不自动清理缓存,true为自动清理缓存。 - 控制页面超时时间:修改
nativeAndroid.config.loadingTimeout = 0;。单位为秒,0为不设置超时。 - 沉浸模式,隐藏系统UI:修改
nativeAndroid.config.immersiveMode = true;。开启沉浸模式。 - 游戏是否支持刘海屏显示:修改
nativeAndroid.config.useCutout = true;。true 为游戏支持并适配,false为不支持。必须开启沉浸模式。 
- 修改游戏地址:将函数
 
JS和原生的通信接入
1. 原生部分
- 在mainActivity的
setExternalInterfaces方法里配置通信接口nativeAndroid.setExternalInterface注册JS中可以调用的原生函数nativeAndroid.callExternalInterface调用JS函数
 setExternalInterface方法的第一个参数是JS中调用原生函数的函数名,第二个参数是该原生函数的功能实现callExternalInterface方法的第一个参数是JS函数的函数名,第二个传入的参数
1  | private void setExternalInterfaces() {  | 
2. JS部分
egret.ExternalInterface.call调用注册过的原生函数
1  | egret.ExternalInterface.call("sendToNative", "message from JS");  | 
egret.ExternalInterface.addCallback注册原生中可以调用的JS函数
1  | function sendToJS(msg) {  | 
只有通过
setExternalInterface注册的原生函数,才能在JS中通过call调用。
只有通过addCallback注册的JS函数,才能在原生中通过callExternalInterface调用。
runtime阶段状态定义
- 我们将runtime启动及运行的阶段进行了定义,主要分为如下几种阶段状态:
 
- loading: 系统初始时的默认状态
 - starting: 表示index.html已经加载成功
 - running: 表示starting状态后,执行完json、js等文件资源加载并开始执行渲染
 
运行时state事件处理方法
1. runtime运行中各个事件的说明
- 事件说明如下
 
| 事件类型 | 事件消息 | 所属阶段 | 事件意义 | 
|---|---|---|---|
| @onState | {“state”:”starting”} | loading到starting | index.html加载成功 | 
| @onState | {“state”:”running”} | starting到running | starting状态后开始执行渲染(注:starting状态后,若json或js等文件加载失败,会通过具体的js错误进行提示) | 
2. 监听state事件的方法
- 注册对state事件的监听,在函数
setExternalInterfaces中: 
1  | private void setExternalInterfaces() {  | 
处理错误
如果您需要处理错误,请参照 Egret Native 上处理游戏错误。
添加loading界面
loading界面的使用依赖与state事件的处理,请先完成上一部分的阅读。
1. 打开loading界面
- 在MainActivity的onCreate函数中调用函数showLoadingView
 
1  | private ImageView launchScreenImageView = null;  | 
2. 关闭loading界面
- 收到{“state”:”running”}消息后,调用函数hideLoadingView
 
1  | private void hideLoadingView() {  | 
         评论