现在也不到有多少游戏是 Unity3D 写的
操作倒是很省事,在Unity中写了程序,直接生成了 Android的 APK
但内部其实还是听复杂的,对用 C#生成的脚本需要用 mono 来解释履行
而Android利用本来就是运行在Dalvik Java 虚拟机, 就是经过了两层 runtime 才运行
不过我们更”变态“,我们想在qemu-arm ( 主机是x86) 中运行带 mono 的Unity程序
结果遇到个问题
mono 报错
mono : * Assertion at mini-posix.c:382, condition `sigaction (signo, &sa, &previous_sa) != ⑴' not met
加 log 发现是设置 中断 33 出现的问题
========
do_sigaction sig 33 host_sig 33 ret ⑴
02⑴0 03:54:43.441 147 186 F mono : * Assertion at mini-posix.c:382, condition `sigaction (signo, &sa, &previous_sa)
!= ⑴' not met
编写了1个小程序 pnp5 直接截取中断 33 出错
$ LD_LIBRARY_PATH=./system/bionic_arm/system/lib ./system/target_libc/system/bin/qemu-arm ./system/bionic_arm/system/bin/pnp5
sigaction 33 return ⑴
用glibc编译此程序运行也出错
应当是Ubuntu Linux 不让 设置 中断 33
不过既然 Unity 这么流行,不可能就这样出错,在arm手机实验
用NDK编译此程序,竟然没有出错
因此在Android的 linux中, 中断 33是允许设置的
程序清单
下一篇 自己学驱动18――中断