Unity Android DLL 热更
2018/4/8 技术探讨

是的,没错,前两篇(《如何在Debian中编译Unity Mono生成Android版的libmono.so》《如何在CentOS/RHEL中编译Unity Mono生成Android版的libmono.so》)中说的需求其实就是Android中Unity的DLL热更新。热更新可以说一直都是游戏(特别是手游)必不可少的功能之一。目前由于苹果对JIT的限制,我们无法在IOS上直接的热更新DLL(最多也只能采取一种曲线救国的方式使用Lua之流的脚本语言调用C# API的方式来实现“热更新”,但也只能某种程度上),但安卓却完全不受此限制。此外,不少的游戏商(特别是中小型寨厂)上线一款游戏都会先上安卓版,然后去各大平台、渠道买量,再根据当前的市场环境以及收到的反馈进行程序上与数值、玩法上的修改和调试,等改得差不多了再上Apple store,上线前期会出现比较多的更新需求。如何热更新Android的DLL?使用反射的方式从外部Load程序集?听起来可行,但这却有着一个致命性的缺点,那就是IOS用不了,这就意味着需要分别对Android和IOS分别进行处理,这只会徒然增加工作量。好在Unity是使用Mono作为运行时并且Mono是开源的,这提供了一种“非官方”的解决方案,那就是改掉Mono的源码,让它可以实现Android的DLL热更。

如何在CentOS/RHEL中编译Unity Mono生成Android版的libmono.so
2018/4/6 Unity小记录

在上一篇的《如何在Debian中编译Unity Mono生成Android版的libmono.so》的文章中介绍了如何用Debain编译Unity Mono并生成Android版的libmono.so。不过后来我想了想,还是觉得里面有些美中不足的地方。首先Debian官网已经把Debian 8“淘汰”掉,官网已经不再提供下载地址,尤其是上文中所用到的32位Debian 8更是很难找到途径下载(我自己也是找了N久);其次由于NDK采用的是在线下载方式,且不说大陆的网络访问谷歌你懂的,就如果编译的机器处于无法连接互联网状态下(譬如像我所任职的寨厂采取内外网分离)也是无法作到这件事的;最后我觉得还是有少少东西需要再说清楚一点。所以决定额外多踩几个坑,写下了本文章赠与自己以及有缘读者。

如何在Debian中编译Unity Mono生成Android版的libmono.so
2018/4/6 Unity小记录

最近我们有个需求是需要重新编译Github上Unity提供的Mono,重新生成一个新的Android版的libmono.so。在花了很长时间来研究尝试以及踩了数不清的坑之后,终于成功编译出libmono.so。这里打算记录分享一下,供自己以后有需要的时候查看以及有缘的读者们参考少绕弯路。

如何用C#写一个Daemon(守护进程)
2016/12/2 技术探讨

无论是守护进程还是NT服务,我相信这都是开发中经常用到的技能,像譬如如何用C#写一个NT服务之类的,网上有许多使用简单的框架,你也可以采用直接继承BaseService这种比较原始的方式来写,这里我就不作任何介绍。本篇中,我打算说说怎么使用C#在Linux中写一个简单的守护进程(可以使用Mono或者.NET Core)。