最近有个项目需要实现安卓全局代理的功能,故研究了下SS-android,收获良多。其中一个就是 进程间传递fd 的实现, ss-android中 VpnService 与 tun2socks 属于不同的进程,VpnService 得到tun设备的fd后传递给 tun2socks ,由 tun2socks 实现代理功能。
android.mk
########################################################
## libancillary
########################################################
include $(CLEAR_VARS)
ANCILLARY_SOURCE := fd_recv.c fd_send.c
LOCAL_MODULE := libancillary
LOCAL_CFLAGS += -O2 -I$(LOCAL_PATH)/libancillary
LOCAL_SRC_FILES := $(addprefix libancillary/, $(ANCILLARY_SOURCE))
include $(BUILD_STATIC_LIBRARY)
libancillary 编译为静态库,其他程序,如 system(libsystem.so),加载此静态库
########################