gpt4 book ai didi

java - 使用 OpenVPN 创建 VPN

转载 作者:行者123 更新时间:2023-12-01 19:17:01 61 4
gpt4 key购买 nike

我在 Android 10 上连接 VPN 时遇到问题,并在 logcat 中收到以下消息。这是权限错误。寻找解决方案。还在 Mainfest 中添加了 android:requestLegacyExternalStorage="true"但对我不起作用。

D/ConnectionStatus:IO 异常java.io.IOException:无法运行程序“/data/user/0/com.casvpnapp/cache/pie_openvpn.x86_64”:错误=13,权限被拒绝

D/de.blinkt.openvpn.core.OpenVPNService: onStartCommand: Australia
I/VpnState: VPN_GENERATE_CONFIG LEVEL_START
D/ConnectionStatus: ---/data/user/0/com.casvpnapp/cache/android.conf
D/ConnectionStatus: ---/data/user/0/com.casvpnapp/cache/android.conf
D/de.blinkt.openvpn.core.OpenVPNService: startOpenVPN: argv:3
D/ConnectionStatus: --[Ljava.lang.String;@ef1521a
I/OpenVPN: Starting openvpn [Ljava.lang.String;@ef1521a
D/ConnectionStatus: ---29
startOpenVPNThread---/data/user/0/com.casvpnapp/cache/pie_openvpn.x86_64
D/ConnectionStatus: IO Exceptionjava.io.IOException: Cannot run program "/data/user/0/com.casvpnapp/cache/pie_openvpn.x86_64": error=13, Permission denied
E/OpenVPN: OpenVPNThread Got java.lang.NullPointerException: Attempt to invoke virtual method 'void java.lang.Process.destroy()' on a null object reference
I/VpnState: NOPROCESS No process running. LEVEL_NOTCONNECTED
W/Thread-20: type=1400 audit(0.0:55): avc: granted { execute } for name="pie_openvpn.x86_64" dev="vdc" ino=23035 scontext=u:r:untrusted_app:s0:c139,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c139,c256,c512,c768 tclass=file app=com.casvpnapp
I/OpenVPN: Exiting

最佳答案

我最近遇到了完全相同的问题。我使用的是 EasyVPN-Free 的克隆版。经过仔细检查,我发现大多数这些应用程序都使用相同的方法并使用旧版本的 ics-openvpn 核心。

看起来您还在应用程序中使用旧版本的 ics-openvpn,该版本与 android 10 不兼容,因为它尝试通过从 Assets 加载 ovpn 二进制文件(而不是使用 JNI lib 来启动进程),这是被禁止的安卓 10。

要解决此问题,请在 VPNLaunchHelper.java 类中找到以下方法:

private static String writeMiniVPN(Context context)

在开头添加以下行

String nativeAPI = NativeUtils.getNativeAPI();
/* Q does not allow executing binaries written in temp directory anymore */
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P)
return new File(context.getApplicationInfo().nativeLibraryDir, "libovpnexec.so").getPath();

现在找到以下行并注释/删除它:

String nativeAPI = NativeUtils.getNativeAPI();

[更新]

正如 Md. Ikramul Murad 最初建议的那样

在 list 文件中添加以下代码:

<application     android:extractNativeLibs="true"     ... >

现在获取适合您的目标平台的 libovpnexec.so 并将它们适本地粘贴到应用程序的 jniLibs 文件夹中,这应该可以修复 Android 上的异常。

可以引用这个EasyVPN-Free我专门制作了 fork 来解决这个问题。

我希望这能帮助所有可能遇到同样问题的其他人。

关于java - 使用 OpenVPN 创建 VPN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59406168/

61 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com