android Always-on VPN 在内部如何工作?
How android Always-on VPN internally works?
我可以从 developer.android.com 中了解到如何从 VPN 应用程序的角度支持 Always-on VPN。
但是找不到任何关于 android 系统如何在内部实现此功能的信息?
- android 系统是否定期唤醒并检查 VPN 服务是否 运行,如果没有则尝试启动指定的 VPN 服务?
- 这种情况是否定期发生?
- 如果没有网络连接怎么办? android 是否要等到 n/w 连接恢复后才能启动 VPN 服务?
提前致谢
Does the android system wake up periodically and check if the VPN service is running and if not then tries to start the specified VPN service?
否,系统启动后会启动一次 VPN 服务(使用操作 android.net.VpnService
)。根据 Android 版本,用户首先必须解锁系统(似乎 Android 8+ 就是这种情况)。 Android 7.x 情况并非如此,如果 VPN 应用程序(例如需要访问锁定的 KeyChain
.
中的凭据
只要用户在系统的 VPN 设置中启用永远在线的 VPN 功能,它也会启动 VPN 服务。
Does this happen on a regular interval basis?
否,但自 Android8 起,如果启用了永远在线的 VPN 功能但当前没有隧道接口,系统会显示通知(点击通知将打开系统的 VPN 设置)。
What if there is no network connectivity? Will android wait until the n/w conn is restored to start the VPN service?
不,VPN 应用程序必须处理这种情况。
我可以从 developer.android.com 中了解到如何从 VPN 应用程序的角度支持 Always-on VPN。
但是找不到任何关于 android 系统如何在内部实现此功能的信息?
- android 系统是否定期唤醒并检查 VPN 服务是否 运行,如果没有则尝试启动指定的 VPN 服务?
- 这种情况是否定期发生?
- 如果没有网络连接怎么办? android 是否要等到 n/w 连接恢复后才能启动 VPN 服务?
提前致谢
Does the android system wake up periodically and check if the VPN service is running and if not then tries to start the specified VPN service?
否,系统启动后会启动一次 VPN 服务(使用操作 android.net.VpnService
)。根据 Android 版本,用户首先必须解锁系统(似乎 Android 8+ 就是这种情况)。 Android 7.x 情况并非如此,如果 VPN 应用程序(例如需要访问锁定的 KeyChain
.
只要用户在系统的 VPN 设置中启用永远在线的 VPN 功能,它也会启动 VPN 服务。
Does this happen on a regular interval basis?
否,但自 Android8 起,如果启用了永远在线的 VPN 功能但当前没有隧道接口,系统会显示通知(点击通知将打开系统的 VPN 设置)。
What if there is no network connectivity? Will android wait until the n/w conn is restored to start the VPN service?
不,VPN 应用程序必须处理这种情况。