谁偷了我的热更新？Mono，JIT，IOS

游客

标题:谁偷了我的热更新？Mono，JIT，IOS
正文:
转载出处（http://www.cnblogs.com/murongxiaopifu/p/4278947.html ）作者信息慕容小匹夫前言由于匹夫本人是做游戏开发工作的，所以平时也会加一些玩家的群。而一些困扰玩家的问题，同样也困扰着我们这些手机游戏开发者。这不最近匹夫看自己加的一些群，常常会有人问为啥这个游戏一更新就要重新下载，而不能游戏内更新呢？作为游戏开发者，或者说Unity3D程序猿，我们都清楚Unity3D不支持热更新，甚至于在IOS平台上生成新的代码都会导致游戏报错崩溃（匹夫之所以在此处强调生成新的代码这几个字，就是提醒各位不要混淆Reflection.Emit和反射）。但我们是否和普通的玩家一样，看到的仅仅是&ldquo;不能&rdquo;的现象，而不了解&ldquo;不能&rdquo;背后的原因呢？那今天小匹夫就抛砖引玉，写写自己对这个问题的想法~~聊聊到底是谁偷了玩家的热更新。从一个常见的报错说起不知道各位看官中的U3D程序猿在开发IOS版本的时候是否也曾经碰到过这样的报错：ExecutionEngineException: Attempting to JIT compile method 'XXXX' while running with --aot-only.这个报错的意思很明确，说的也很具体，翻译成中文的大意就是在使用--aot-only这个选项的前提下，又试图去使用JIT编译器编译XXX方法。那么不知道是否会有看官觉得这个问题兴许是程序跑在IOS平台上时，不小心犯了IOS的忌讳，使用了JIT（假设此时我们还不知道为何使用JIT是IOS的忌讳）去动态编译代码导致的IOS的报错呢？答案是否定的。又或者更进一步，看到&ldquo;ExecutionEngineException&rdquo;，似乎和IOS平台的异常没什么太大的关联，那就把责任定位在Unity3D的引擎上好了。一定是游戏引擎此时不支持JIT编译了。也不全对，不过离真相很近了。各位想想，能涉及到编译的被怀疑的对象还能有谁呢？好了，不卖关子了。这个异常其实是Mono的异常。换言之，Unity3D使用了Mono来编译，所以Unity3D的嫌疑被排除。而IOS并没有因为生成或者运行动态生成的代码而报错，换言之这个异常发生在触发IOS异常之前，所以说Mono在IOS平台
[<<][[1]][2][3][>>]

查看评论(0)
发表评论

首页