android 软件apk自动更新实现注意点!!

时间:2021-05-31 06:01:51

1,解析xml时的NetWorkOnMainThread问题

代码:这里要注意的点就是在访问服务器网络时,不能将InputStream直接返回,因为若直接返回给主线程操作,很可能子线程的InputStream还在获取字节流,这时候就会导致这个UI线程访问网络异常,所以不能直接返回这个InputStream,直接在子线程里

操作这个输入流,然后将操作的结果返回。

private class AsyncTask_ConnVersion extends AsyncTask<String, Void, ConnData>
    {

        @Override
        protected ConnData doInBackground(String... params) {
            URL serviceAddrUrl;
            HttpURLConnection conn;
            String urlStr=params[0];
            try {
                serviceAddrUrl = new URL(urlStr);
                conn = (HttpURLConnection) serviceAddrUrl.openConnection();
                conn.connect();
                int len=conn.getContentLength();
                InputStream in=conn.getInputStream();
                HashMap<String, String> hashMap=new ParseXmlService().parseXml(in);
                connDataInfo=new ConnData(hashMap, len); 
                //关闭连接
                conn.disconnect();
                return connDataInfo;
            } catch (Exception e) {
                e.printStackTrace();
            }
            
            return null;
        }
        
    }

 

2,FileNotFound

apk在服务器上找不到,路径都对就是文件无法访问到,这个问题我是看别人解决的:URL请求的具体实现,网上各种各样,没有什么好纠结的了。URL路径完全没有问题,替换成同目录下的其他类型文件,可以找到文件,唯独找不到文件。

 

找了几个小时,悄然发现,原来和IIS的设置有关系,我这边使用的测试服务器为IIS,IIS默认限制了apk类型文件的下载,所以输入流拿不到文件数据,提示“找不到文件”。

 

最终解决办法:

1、在管理工具里打开Internet 信息服务(IIS)管理器。然后选择需要配置的网站。

2、右侧的界面中会显示该网站的所有功能配置,我们选择并点击进入“MIME类型”。

android 软件apk自动更新实现注意点!!

3、在右侧的操作区选择点击“添加”MIME。

android 软件apk自动更新实现注意点!!

4、在弹出的添加窗口里的文件扩展名输入:APK

 

在MIME类型输入:application/vnd.android.package-archive

按确定。

android 软件apk自动更新实现注意点!!

3,版本更新时已经下载好后的apk无法安装,安装不上,代码没有问题,后来发现必须以发布的方式运行原始的apk,然后更新下下来最新的apk进行安装。即要导出当前测试的apk而不能直接在eclipse上测试更新安装这个。