今天的天生一队活动展示了之前大家做的东西,简单的讲了一下手机安装Nodejs(Nodejs on IOS/ Nodejs on Android)。

想了想,这里有一些坑,还是记录下来比较好。

关于我们天生一队做的项目,可以参考GITHUB上的这个repo

首先展示一下被折腾的主角,两部手机,分别是iPhone 4S 和 小米3。

the-mobiles

请不要在意手机上的指纹,这些是不重要的细节。

简单说一下手机的概况,iPhone 4S 系统版本为7.04越狱。 使用Terminal作为终端,node有Cydia上现成的包,不过版本很低,只有0.6.0.4,而新版本要求如下:

ios-node-version

Prerequisites (Unix only): * GCC 4.2 or newer * Python 2.6 or 2.7 * GNU Make 3.81 or newer * libexecinfo (FreeBSD and OpenBSD only)

经过一番折腾,GCC版本更新到了4.2.1,Make更新到了3.8.1,Python没敢更新,担心影响手机正常运行(刷会非越狱不是我所想啊),libexecinfo 安装不能。 所以ios仅仅可以跑低版本Node支持的API,不过偶尔开个服务器神马的足够用,但是我们的项目需要的最低依赖都是v.0.10…

而且出于活动小组内大家有2-3部米3,所以改变目标为小米3跑Nodejs,这里想到有两种解决方案,一种是直接在Android中跑Nodejs,一种是用手机模拟器来模拟”PC常见的操作系统”,然后跑Nodejs。

第一种方案,有可能搞坏手机,毕竟正常时候,手机还是要用来玩和打电话的,关键时刻重启或者挂了就不好了,所以采取第二种方案,并且第一种方案,网上找到的方法多数人都是使用了交叉编译,感觉编译出来的东西放过来可能有风险,于是作罢,采取第二种方案。

而在Android上模拟其他的操作系统,我们一般使用BusyBox来搞,但是除了模拟器外,我们还需要一些对应操作系统的Bootloader脚本来启动模拟器,这里选择了一个叫做Comple的App,他整合了镜像下载,和启动脚本,并且可以自己定义脚本。

mi-busy-box

这里提供一下工具中的启动脚本,如果有童鞋还想继续完善,可以考虑一下。

bootscript.sh

不过在启动模拟器之前,我们需要获取ROOT授权,由于使用的是MIUI的开发版,很容易就可以获取ROOT权限,在安全管理中打开开关。

mi-root-admin

之后运行终端,以及BUSYBOX,如果成功,会在列表中产生记录。

mi-root-list

在手机上打开刚刚安装并配置好的Comple应用,选择启动系统,会跳转至手机终端,这里需要注意,启动后会因为提示generic atexit() called from legacy shared library而挂起,请输入y,因为默认脚本没有做容错处理,直接enter或者输入其他会引起脚本启动失败。

console-1

启动的时候,慢点操作,根据自己情况输入即可。

console-2

这里展示一张完全搞定的界面。

console-3

系统启动完成后,我们当然是愉快的用VNC连接并开始安装我们的软件了,VNC的帐号设置,参考之前配置系统安装的时候的设置,如果连接不了,原因可能是:

  • 模拟器权限不够,启动失败;
  • 刚刚启动脚本乱输入参数,SSH以及VNC有服务器没启动起来;
  • 你的系统镜像有问题,安装错误;
  • VNC帐号密码有问题。请面壁后挨着检查和重试。

vnc-account

连接好后,就是这个样子了~

vnc-on-mobile

当然,因为手机输入效率堪忧,也没有搭配蓝牙键盘…

但是庆幸的是,我们有VNC(当然你要确保上一步你开启了VNC SERVER)…

电脑链接VNC吧,如果你的手机和电脑在同一台路由器或者同一个网段里,很容易的。

vnc-on-pc-1

接下来就是下载合适的源码包,configure/make/make install等等了。

vnc-on-pc-2

这里额外提一下,编译node的话,需要加参数,–without-snapshot,当然,如果你不需要ssl,也可以 –without-ssl。

今天展示的时候,再次升级了node的版本,如下图所示。

2014-05-09_174857

最后,手机端运行操作系统可以做的事情很多,可以完备运行nodejs的话可以做的事情就更多了,接下来会抽时间看看如何调用手机上的各种设备,扩展一些可能性。

  • 试想,当苦逼的在外面的时候,突然需要线上业务维护,这时,口袋里的操作系统或许可以救你一命;(当然希望这个场景不存在)
  • 再试想,当苦逼的上下楼窜来窜去聊需求的时候,直接把手机上的应用和demo展示出来,多么轻松;(再轻薄的笔记本也好重,尤其走的多的时候)
  • 再试想,当你不需要带着笔记本去公司,仅需要一个蓝牙键盘或者手机扩展键盘 && 显示器+数据线就能搞定业务需求的时候;
  • 当然,如果你安装带了许多好玩工具的backtrace的话,能玩的事情就更多了吧。

先写到这里,想到什么再补充吧,感谢阅读,欢迎拍砖。