Unity3d Android Http 开发中的坑(吐槽
在一般的U3D网络开发中,直接使用WWW类便足够正常使用,但我在发现使用WWW下载大文件时,会导致整个程序卡顿的情况(不清楚是否我个人电脑问题),所以干脆使用HttpWebRequest/HttpWebResponse + await/async 来代替WWW。
U3D中还是在使用比较低的Mono版本,所以是不支持(await/async)的。准确来说是不支持Task<T>,而且还有些BUG(我自个能确定的就有两个),现在最希望就是U3D更新Mono版本,写代码就可以更爽了!
无奈之下,只有参照AsyncEnumerator和U3D本身的Coroutine来实现一个自用的Coroutine库,在PC中测试了,发现有时候异步读取时可能会发生没有(回)调用AsyncCallback,当时电脑确实出了点问题,重启之后此事再无发生。
随之Build成安卓版放到手机里测试下......崩了!此时,我第一步想到的是U3D在安卓下是否HttpWebRequest等?因为按道理说如果Build成功的话应该是支持的,所以新建了一个干净的新项目,只包含Http相关的。
再放进去:WebException!输出信息是一堆英文,鉴于本人英语水平有限并信息无法复制,所以立即放弃了上网找原因的想法。我猜想的是应用没有访问网络的权限(安装时我没细看)。
因此,再添加一个测试原生WWW的脚本:(以证明不是我代码问题(逃)
public class DownloadWWW : MonoBehaviour { // Use this for initialization
void Start () {
StartCoroutine(Download());
} IEnumerator Download()
{
WWW www = new WWW("http://cn.bing.com");
yield return www;
foreach (var h in www.responseHeaders)
t += h.Key + " " + h.Value + "\n";
t += www.text;
}
string t;
int c;
void OnGUI()
{
GUILayout.Button(c++ + " ! " + t);
}
}
继续Build放到手机,这次安装我可慢慢看清楚了:应用需要新权限——网络访问。果真如此,在加了WWW之后连原先的代码都能正常运行了。
再猜想,是的,我不是合格的程序员,我不想去验证:
只有在U3D编译代码时发现脚本有使用WWW 或 Networkxxx 等类时,才增加应用访问权限,否则即使只使用HttpWebRequest 或Socket也无法访问网络。
当然也可以自行在Android中增加网络权限。
最后:此文标题虽写吐槽,而我本想正正经经地写好文章,但发现写作水平以下降的小学水平,当且作为流水账看罢。
Unity3d Android Http 开发中的坑(吐槽的更多相关文章
- Unity3D Android手机开发环境配置
Unity3D Android手机开发环境配置 Date:2014-01-01 07:09 1.配置eclipse环境:首先在官网下载安装包:http://developer.android.com/ ...
- Android应用开发中关于this.context=context的理解
在Android应用开发中,有的类里面需要声明一个Context的成员变量,然后还需要在该类的构造函数中加上this.context=context;这行代码.为什么要这么写呢?不写不行么? 先看下面 ...
- Android学习开发中如何保持API的兼容
Android学习开发中如何保持API的兼容: 1,采用良好的设计思路 在设计过程中,如果能按照下面的方式来进行设计,会让这个API生命更长久 面向用例的设计,收集用户建议,把自己模拟成用户,保证AP ...
- Android应用开发中三种常见的图片压缩方法
Android应用开发中三种常见的图片压缩方法,分别是:质量压缩法.比例压缩法(根据路径获取图片并压缩)和比例压缩法(根据Bitmap图片压缩). 一.质量压缩法 private Bitmap com ...
- Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听
原文:Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听 简单记录下android 盒子开发遥控器的监听 ,希望能帮到新入门的朋友们 不多说,直接贴代码 public cla ...
- 【Android】开发中个人遇到和使用过的值得分享的资源合集
Android-Classical-OpenSource Android开发中 个人遇到和使用过的值得分享的资源合集 Trinea的OpenProject 强烈推荐的Android 开源项目分类汇总, ...
- 浅谈Android系统开发中LOG的使用
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6581828 在程序开发过程中,LOG是广泛使用 ...
- 浅析Android Camera开发中的三个尺寸和三种变形 (贡献一个自适配Picturesize和Previewsize的工具类)
转至 (http://blog.csdn.net/yanzi1225627/article/details/17652643) 经常听人问Camera开发中,各种变形问题,今天有空就在此梳理总结下. ...
- Android应用开发中的夜间模式实现(一)
前言 在应用开发中会经常遇到要求实现夜间模式或者主题切换具体例子如下,我会先讲解第一种方法. 夜间模式 知乎 网易新闻 沪江开心词场 Pocket 主题切换 腾讯QQ 新浪微博 我今天主要是详述第一种 ...
随机推荐
- Win8.1无法安装.NET Framework 3.5的解决办法
这个问题纠结了我很多天,恢复系统也没用,差点儿就重装Win8,现在终于解决了,你也来试试吧! 机型:台电X89 系统:Win8.1 with bing 故障:在未安装.NET Framework 3. ...
- ThinkPHP升级指导
升级指导 http://www.kancloud.cn/manual/thinkphp5/163239 从V5.0.1升级到V5.0.2 从V5.0.1升级到V5.0.2需要注意如下事项: 下列模型属 ...
- Windows下Eclipse+Scala+Spark开发环境搭建
1.安装JDK及配置java环境变量 本文使用版本为jdk1.7.0_79,过程略 2.安装scala 本文使用版本为2.11.8,过程略 3.安装spark 本文使用版本为spark-2.0.1-b ...
- python基础知识8——模块1——自定义模块和第三方开源模块
模块的认识 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需 ...
- Linux_10------Linux之shell编程------变量
.-9 vim num.sh #! /bin/bash num1=$1 num2=$2 sum=$(($num1+$num2)) #变量sum是num1和num2的综合 echo $sum 执行 ./ ...
- 已解决: 已引发: "无法加载 DLL“opencv_core2410”: 找不到指定的模块。
之前是win7 32位系统,程序运行没有问题:换了64位 win7后,系统就找不到opencv相关库了,网上各种查询解决方法,感觉不太可行,或者很麻烦...多次试验后,找到方便关键的解决方案如下: 计 ...
- JavaScript DOM编程艺术读书笔记(一)
第一章,第二章 DOM:是一套对文档的内容进行抽象和概念化的方法. W3C中的定义:一个与系统平台和编程语言无关的接口,程序和脚本可以通过这个接口动态的访问和修改文档的内容,结构和样式. DHTML( ...
- 形象的讲解angular中的$q与promise(转)
以下内容摘自http://www.ngnice.com/posts/126ee9cf6ddb68 promise不是angular首创的,作为一种编程模式,它出现在……1976年,比js还要古老得多. ...
- SQLServer2008R2 error 40解决方法
实际遇到的问题,以下为搜到的解决方案,亲测可用 转自 http://blog.csdn.net/laga516/article/details/7696577 最近一直在配置服务器, 这当中最头疼的就 ...
- 安装SQL SERVER开启SA用户登录的方法
家庭安装SQL SERVER开启SA用户登录的方法:(切记按照网址操作完后,最后一定要在"管理工具"的"服务"里把"SQL SERVER(MSSQL ...