[]关于LayaBox启动的问题。

使用LayaBox网络加载方案,在首次启动时经常黑屏,这个是抓取的日志如下:
I/LayaBox (12689): read index:/data/data/com.klzz.platform/cache//LayaCache//appCache/48a42618/filetable.txt
E/LayaBox (12689): read index failed
I/LayaBox (12689): Download [ ]:http://192.168.137.1/public/sh ... i.ttf
I/LayaBox (12689): >>>>>>>>>>>>>bGLCanvasSizeChanged w=1920 h= 1080
I/LayaBox (12689): >>>>>>>>>>>>>>>>innerWidth:1920innerHeight:1080
I/GlobalPushManager( 4888): checkPollAndPopSend --> mSenderInfo = SenderInfo{mSendList_size = 0, mLock = java.lang.Object@371aea59, mLastTimeSender = 0}
D/IC5 ( 4543): readEventLogs : User_activity-->1489977325537753559 :com.yunos.tv.homeshell
D/IC5 ( 4543): readEventLogs : am_on_paused_called--> packnameString = 1489977325752612684 :com.yunos.tv.homeshell
D/IC5 ( 4543): readEventLogs : am_on_resume_called--> packnameString = 1489977326342674309 :com.klzz.platform
D/IC5 ( 4543): readEventLogs : am_activity_launch_time-->com.klzz.platform/.PlatformActivity :com.klzz.platform/.PlatformActivity
I/wpa_supplicant( 4401): [CTRL_IFACE] wlan0: 'SIGNAL_POLL'
D/Analytics.UploadTask.4837.621( 4837): [uploadEventLog]
D/Analytics.DBMgr.4837.621( 4837): [find] DBMgr,sql:SELECT * FROM log ORDER BY priority DESC , time DESC LIMIT 20
D/Analytics.LogStoreMgr.4837.621( 4837): [get] LogStoreMgr,[get]:
D/Analytics.UploadMgr$4.4837.621( 4837): [onUploadExcuted],mCurrentUploadInterval:30000
D/Analytics.CommitTask.4837.624( 4837): [run] CommitTask,check&commit event:65503
D/Analytics.CommitTask.4837.624( 4837): [run] CommitTask,check&commit event:65502
D/Analytics.CommitTask.4837.624( 4837): [run] CommitTask,check&commit event:65501
I/_sendLog( 8298): TBSEngine:_sendlog
I/saveToStorage( 8298): TBSEngine:commit to storage
I/request[transfer_data]( 8298): TBSEngine:skip[no logs]
I/saveToStorage( 8298): TBSEngine:commit to storage
D/Analytics.CommitTask.4888.1513( 4888): [run] CommitTask,check&commit event:65502
D/Analytics.CommitTask.4888.1513( 4888): [run] CommitTask,check&commit event:65501
D/Analytics.CommitTask.4888.1513( 4888): [run] CommitTask,check&commit event:65503
I/GlobalPushManager( 4888): checkPollAndPopSend --> mSenderInfo = SenderInfo{mSendList_size = 0, mLock = java.lang.Object@371aea59, mLastTimeSender = 0}
I/wpa_supplicant( 4401): [CTRL_IFACE] wlan0: 'SIGNAL_POLL'
I/GlobalPushManager( 4888): checkPollAndPopSend --> mSenderInfo = SenderInfo{mSendList_size = 0, mLock = java.lang.Object@371aea59, mLastTimeSender = 0}
I/SENTRY ( 5526): [DEBUG] << getaddrinfo ip.taobao.com ^ 1024 0 1 0 0
I/SENTRY ( 5526): [DEBUG] Cache hit, Q = ip.taobao.com, A = 42.120.226.92.
I/GlobalPushManager( 4888): checkPollAndPopSend --> mSenderInfo = SenderInfo{mSendList_size = 0, mLock = java.lang.Object@371aea59, mLastTimeSender = 0}
I/wpa_supplicant( 4401): [CTRL_IFACE] wlan0: 'SIGNAL_POLL'
E/LayaBox (12689): download error: timeout, dt=8,opttimeout=1798
I/LayaBox (12689): Downloaded http://192.168.137.1/public/sh ... tf%40 s=0 l=0
I/LayaBox (12689): onerror UnknownError
I/LayaBox (12689): Download [ ]:http://runtime.layabox.com/font/simhei.ttf
I/SENTRY ( 5526): [DEBUG] << getaddrinfo runtime.layabox.com 80 0 2 1 0 0
I/SENTRY ( 5526): [DEBUG] Resolve success, Q = runtime.layabox.com, A = 110.53.75.44.
I/GlobalPushManager( 4888): checkPollAndPopSend --> mSenderInfo = SenderInfo{mSendList_size = 0, mLock = java.lang.Object@371aea59, mLastTimeSender = 0}
I/wpa_supplicant( 4401): [CTRL_IFACE] wlan0: 'SIGNAL_POLL'
I/GlobalPushManager( 4888): checkPollAndPopSend --> mSenderInfo = SenderInfo{mSendList_size = 0, mLock = java.lang.Object@371aea59, mLastTimeSender = 0}
I/LayaBox (12689): Download end:200
I/LayaBox (12689): Downloaded http://runtime.layabox.com/fon ... 75.44 s=0 l=4529044
I/LayaBox (12689): download end
I/LayaBox (12689): parse:normal 100 16px Arial,fontinfo:size:16,family:Arial
E/LayaBox (12689): download file error[1]:file:///data/data/com.klzz.platform/cache/LayaCache/localstorage/logo/logo.png
I/LayaBox (12689): require(/sdcard/layabox/scripts/config.js)
I/LayaBox (12689): found the file in the package:scripts/config.js
I/LayaBox (12689): Download [ ]:http://192.168.137.1/public/sh ... 2.471
E/LayaBox (12689): download image file error! file:////data/data/com.klzz.platform/cache//LayaCache//localstorage/logo/logo.png
I/LayaBox (12689): found the file in the package:logo.swf
I/LayaBox (12689): xhr.GET url=file:////data/data/com.klzz.platform/cache//LayaCache//localstorage/logo.swf

-----------------------------------------------------
由上可得知,LayaBox启动的顺序是:
1、加载取本地文件列表:filetable.txt;
2、再从apk指定的服务器上加载:simhei.ttf;
3、如果当前提供的服务器上不存在simheittf文件,则从:http://runtime.layabox.com/font/simhei.ttf 这个地址上下载;
4、加载simhei.tff后,再加载logo.png;
5、最后显示加载界面;
-----------------------------------------------------
上述流程会导致黑屏,原因如下:
1、当simhei.tff在游戏指定的服务器上不存在或是网络不顺畅的时候,系统会有一个阻塞时间,大概约1s~2s;
2、如果下载失败,则会从:http://runtime.layabox.com/font/simhei.ttf 这个地址上下载,如果网络不顺畅时,系统也会有一个阻塞时间,大概约1s~2s;
3、simhei.tff文件大小是:4,529,044字节【约4.5M】,下载这样一个文件也需要大概2秒左右;
总结上述流程总共需要花费约5秒,而这5秒系统是没有任何显示的;
只有当simhei.tff加载完成之后,load.js才会将logo.png或logo.swf才显示出来;
这个时候才看到加载界面。
测试系统:YunOS 6.0
下载摘自:index.js 
if (bRet == false) {
var sTempFontPath = conch.getCachePath() + "/runtimeFont/";
if (!fs_exists(sTempFontPath)) {
fs_mkdir(sTempFontPath);
}
sTempFontPath += "layabox.ttf";
bRet = conch.initFreeTypeDefaultFontFromFile(sTempFontPath);
if (bRet == false) {
var data = ([b]yield asyncs.downloadSync[/b](location.fullpath + '/font/simhei.ttf', true, null));
if (!data) {
data = ([b]yield asyncs.downloadSync[/b]('http://runtime.layabox.com/font/simhei.ttf', true, null));
}
if (!data) {
alert('>>>download ttf error ');
return;
}
fs_writeFileSync(sTempFontPath, data);
conch.initFreeTypeDefaultFontFromFile(sTempFontPath);
}
}

-----------------------------------------------------
个人认为这样是十分差的用户体验。
正常的流程应该是:
1、启动时检查本地缓存中 是否存在加载界面的配置或资源;
2、存在,则显示缓存中的加载界面;
3、不存在,则显示默认的加载界面;
4、接下来再去下载相应的字体文件【或干脆将这一部分直接打包到sdk中去】;
5、提供游戏开发者自定义更新加载界面的接口;
 
已邀请:

wills

赞同来自: ohkei

建议官网优化这个流程,如果官方没时间,我来优化,到时候提供index.js和load.js给到你们~

Laya_XS

赞同来自:

谢谢提的建议,下一步我们就打算优化LayaBox的体验,包括打包时增加是否勾选字体打包,还有其他功能体验上的优化。为了保持沟通,你可以加下我qq,你有什么建议,我们可以qq沟通,你到群群里加下小松的qq号!

要回复问题请先

商务合作
商务合作