XndroidDev / Xndroid

A proxy software for Android based on XX-Net and fqrouter.
GNU General Public License v3.0
952 stars 179 forks source link

Xndroid

A proxy tool for Android based on XX-Net and fqrouter.

最新测试版

稳定版1.3.2

稳定版1.2.6

Android端代工具, 基于fqrouter.

默认集成XX-Net, 安装后无需额外配置即可使用. XX-Net需要使用ipv6, Xndroid已内置teredo客户端, 默认使用teredo访问ipv6, 无需额外配置. 如果你的网络支持原生ipv6, 可尝试在启动设置中勾选ipv6可用时禁用teredo. 需要注意是许多地区原生ipv6封锁较严重, 此时使用teredo隧道效果可能更好. 另外不同网络环境, 封锁情况差别很大, 通常来说, 手机网络环境比宽带网络环境好.

鉴于目前网络环境, 如果内置XX-Net无法正常使用, 请在fqrouter管理页中添加个人代理(如Shadowsocks).

默认集成的XX-Net不是使用socket转发, 会存在证书问题, 一些APP中可能会无法正常联网. 要解决此问题, 请在fqrouter管理页中添加个人代理(如Shadowsocks)并删除默认的XX-Net代理HTTP 127.0.0.1:8087.

特性

兼容性与局限性

共享代理网络

fqrouter提供了多种网络共享功能, root后可使用更多功能. 注意如果用到了GAE代理, 则目标设备上也需安装证书

直连白名单

fqrouter已内置大量国内域名列表和国内ip段, 对绝大部分国内网站的访问会直连. 你也可以在/sdcard/domain_whitelist.txt(若不存在新建即可)中添加自定义的需要直连的域名, 每行一个, 如:

github.com
githubusercontent.com
githubapp.com
ftchinese.com
ted.com
tedcdn.com
howcast.com

注意Android6.0 及以上必须授予存储空间(访问媒体文件)的权限. 如果仍然不能满足需求, 可以在fqrouter的配置代理中关闭优先使用个人代理, 并开启直连可以直连的服务器

更新XX-NET

在XX-Net管理页中点击相应更新按钮即可. Xndroid更新时也会更新自带的XX-Net.

修改XX-NET配置

一般无需也不建议手动修改XX-NET配置文件. 如特殊情况需要修改, root用户可直接修改相关文件, 其位于/data/data/net.xndroid/files/xndroid_files/xxnet/; 非root用户可以下载XX-NET zip压缩包, 将其解压, 并修改或添加相应文件再压缩回zip, 点击菜单中的离线更新XX-NET, 选择修改的zip文件即可.

关于编译

编译使用AndroidStudio, 并在AndroidStudio中安装相应SDK, 如API Level 23. 由于VPN模式下需使用JNI, 故还需在AndroidStuio中安装NDK. NDK版本不要太高, 否则不支持armeabi指令集. 此外, LightningBrowser编译还需要在AndroidStudio中安装API Level 26及Kotlin插件. 编译前,在源码顶层目录(Unix环境)下执行./fqrouter_prebulid.sh. 其会将fqrouter使用gz压缩到app/src/main/res/raw/fqrouter. 下载XX-Net源码, 将android_start.py复制到XX-Net源码顶级目录, 然后使用gz压缩到app/src/main/res/raw/xxnet.

# 编译器前进行以下操作
# 进入源码目录
cd "Xndroid_source_path"
# 压缩fqrouter
./fqrouter_prebulid.sh
# 下载XX-Net到临时目录
mkdir xxnet_tmp
version=3.12.2
wget -O xxnet_tmp/xxnet.zip https://github.com/XX-net/XX-Net/archive/${version}.zip
unzip xxnet_tmp/xxnet.zip -d xxnet_tmp
cp android_start.py xxnet_tmp/XX-Net-${version}
# 移除不必要的文件
rm -r xxnet_tmp/XX-Net-${version}/code/default/gae_proxy/server
mv xxnet_tmp/XX-Net-${version}/code/default/python27/1.0 xxnet_tmp/XX-Net-${version}/code/default/python27/0
mkdir -p xxnet_tmp/XX-Net-${version}/code/default/python27/1.0/lib
cp -r xxnet_tmp/XX-Net-${version}/code/default/python27/0/lib/noarch xxnet_tmp/XX-Net-${version}/code/default/python27/1.0/lib/
rm -r xxnet_tmp/XX-Net-${version}/code/default/python27/0
# 更改版本号
mv xxnet_tmp/XX-Net-${version}/code/default xxnet_tmp/XX-Net-${version}/code/${version}
echo ${version} > xxnet_tmp/XX-Net-${version}/code/version.txt
# 压缩XX-Net
mv xxnet_tmp/XX-Net-${version} xxnet_tmp/xxnet
tar -czf app/src/main/res/raw/xxnet xxnet_tmp/xxnet
rm -r xxnet_tmp

感谢以下开源项目