Egret社区

[Bug已解决] Egret-Android-support热更新问题

2015-9-9 15:32
254510
产品 Egret Android Support 版本 2.0.5
复现概率 100% 平台 Android 4.22
复现步骤 a)在java端请求一个服务器地址,通过服务器端返回的zip包地址来更改。
b)读取一个特定地址服务器端的文本文件,文件里写有zip包的地址。
上面两句是热片新文档中的,我自己写了一个get请求,可只要运行到请球连接就报错了。
代码我在下面贴出,是在JAVA环境下测试过OK的,放到安卓模板中就出问题。
问题描述 a)在java端请求一个服务器地址,通过服务器端返回的zip包地址来更改。
b)读取一个特定地址服务器端的文本文件,文件里写有zip包的地址。
上面两句是热片新文档中的,我自己写了一个get请求,可只要运行到请球连接就报错了。
代码我在下面贴出,是在JAVA环境下测试过OK的,放到安卓模板中就出问题。

文档上也没看到怎么热更新资源文件,只能更新代码包么?
错误代码 android.os.NetworkOnMainThreadException
BUG截图
public static String sendGet(String url, String param) {
        String result = "";
        BufferedReader in = null;
        try {
            String urlNameString = url;
            URL realUrl = new URL(urlNameString);
            // 打开和URL之间的连接
            URLConnection connection = realUrl.openConnection();
            // 设置通用的请求属性
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 建立实际的连接
            connection.connect();
            // 获取所有响应头字段
            Map<String, List<String>> map = connection.getHeaderFields();
            // 遍历所有的响应头字段
            for (String key : map.keySet()) {
                System.out.println(key + "--->" + map.get(key));
            }
            // 定义 BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(
                    connection.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送GET请求出现异常!" + e);
            e.printStackTrace();
        }
        // 使用finally块来关闭输入流
        finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        return result;
    }

分享到 :
0 人收藏

10 个回复

倒序浏览
r2d2  官方团队 | 2015-9-10 15:05:29
我们的android support中已经封装好了这部分,你直接讲loader_url的地方给出一个动态网页,只要请求这个网页返回的是一下格式的json即可[mw_shl_code=javascript,true]{"code_url":"http://{your host}/{your name}.zip",
"update_url":"http://{your host}/{your game resource}/"
}[/mw_shl_code]
dgflash  登堂入室 | 2015-9-11 09:52:00
还有个问题,更新时的Loading代码是在native_loader.js文件里还是Java里的GameLoadingView.java文件
这两个里面我都看到有进度条的代码
lyy57  斑竹 | 2015-9-11 10:07:29
dgflash 发表于 2015-9-11 09:52
还有个问题,更新时的Loading代码是在native_loader.js文件里还是Java里的GameLoadingView.java文件
这两个 ...

已经帮你转rd2d了,下次记得点回复,否则对方看不到
dgflash  登堂入室 | 2015-9-11 10:08:26
好的,谢谢
r2d2  官方团队 | 2015-9-11 10:11:07
本帖最后由 r2d2 于 2015-9-11 10:12 编辑
dgflash 发表于 2015-9-11 09:52
还有个问题,更新时的Loading代码是在native_loader.js文件里还是Java里的GameLoadingView.java文件
这两个 ...

Java里的GameLoadingView,这个是下载“code_url”使用的,而另一个因为已经进入游戏了,所以是用来加载游戏的更新资源的“update_url”
dgflash  登堂入室 | 2015-9-11 10:17:21
建议如果以后面官方能写一个通用热更新进度条的UI模板就好了,我们替换图片。因为大多游戏的热更新都是差不多的。
第二点就是像我这样不会JAVA的人要实现还是有点麻烦,要去找好多JAVA做UI方面的资料才能改
dgflash  登堂入室 | 2015-9-11 10:24:38
我现在看到的更新就是一个全屏的黄条从左到右,完了就直接进游戏了,有点不知道怎么改成自己想要的
r2d2  官方团队 | 2015-9-14 12:10:40
dgflash 发表于 2015-9-11 10:24
我现在看到的更新就是一个全屏的黄条从左到右,完了就直接进游戏了,有点不知道怎么改成自己想要的 ...

这个建议看一下runtime的接入手册那里,可以去群里面联系@egret官方的人,我也找同事给你看看
bjut08023306  官方团队 | 2015-9-14 12:16:56
进度条的问题 已经记录在案 在后续的版本中 会替换成更加友善的加载页面 供用户使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

返回顶部