1、打开TAP驱动设备于 Android 设备上面是几乎不可能得事情
2、原生代码打开TUNTAP驱动设备于 Android 设备上面需要ROOT令牌,仅限TUN设备
3、Android 上面打开TUN驱动设备需要打开两个不同驱动文件,因为不同 Android 发行版不一定都按照套路来。
4、Android 上面通过原生代码(常指 NDK C/C++)不是个好办法,因为需要ROOT权限。
原生代码打开 TUNTAP 驱动设备代码实现:
this->_handle = open("/dev/tun", O_RDWR | O_NONBLOCK | O_CLOEXEC);
if (this->_handle < 0) {
this->_handle = open("/dev/net/tun", O_RDWR | O_NONBLOCK | O_CLOEXEC);
}
人们有必要参考来自 Google 官方开源 Android JNI 层面实现代码,所示打开 TUNTAP 字符驱动设备代码实现: