很多跨平台实现都避免不了需要加载一个so库,而so库针对不同的芯片还需要不同的编辑版本(ARM和X86).这间接得导致android APP包越来越大.例如目前cocos2d-x的6-8M,Unity5的16-18M,而这都是一张图片 一句具体代码都没写的情况下.做过游戏的都知道:

  1. 资源可以脱离APK包 采用在线更新的方式download到手机上.
  2. 脚本(Lua or Js or C#)也可以采用热更新的方式download到手机上.
  3. 甚至玩家安装了一次APK,以后的新版本APK都可以采用后台download静默安装的方式更新自身.

那现在就剩下最后两个问题:

  1. 我嫌弃更新APK麻烦,只想更新so库,那so库是否可以动态更新?
  2. 或者更变态一点,即使非常必要的时候,我依然不想更新APK,dex是否可以动态更新?

so库:android项目的C++原生拓展编译库,可被加载后执行.
dex文件:android项目中的java代码生成的可执行文件.

下面我们探讨下这第一个问题.

继续阅读