Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用OpenVPN创建VPN_Java_Android_Connection_Openvpn_Android 10.0 - Fatal编程技术网

Java 使用OpenVPN创建VPN

Java 使用OpenVPN创建VPN,java,android,connection,openvpn,android-10.0,Java,Android,Connection,Openvpn,Android 10.0,我面临的问题是在Android 10上连接VPN,并在logcat中获得下面的消息。 这是权限错误。寻找解决方案。 在Mainfest中还添加了android:requestLegacyExternalStorage=“true”,但不适用于我 D/ConnectionStatus:IO异常java.IO.IOException:无法运行程序“/data/user/0/com.casvpnapp/cache/pie\u openvpn.x86\u 64”:错误=13,权限被拒绝 D/de.bli

我面临的问题是在Android 10上连接VPN,并在logcat中获得下面的消息。 这是权限错误。寻找解决方案。 在Mainfest中还添加了android:requestLegacyExternalStorage=“true”,但不适用于我

D/ConnectionStatus:IO异常java.IO.IOException:无法运行程序“/data/user/0/com.casvpnapp/cache/pie\u openvpn.x86\u 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

这似乎是您的OpenVPN库的问题。 虽然我也开发了一个基于OpenVPN库的VPN应用程序,但它对我来说运行良好。你可以查看我的源代码


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

看起来您的应用程序中也使用了旧版本的ics openvpn,该版本与android 10不兼容,因为它试图通过从资产加载ovpn二进制文件(而不是使用JNI lib)来启动进程,这是android 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();
现在为您的目标平台获取libovpnexec.so
,并将它们适当粘贴到应用程序的jniLibs文件夹中。这将修复您在android上的异常

您可以参考我专门为解决此问题而制作的这个fork


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

谢谢@Vicky先生。现在问题解决了,你可以在安卓30上使用了too@Ashraf789它在版本>22时不起作用。如何处理?好吧,让我检查一下。@Ashraf789您能告诉我您是如何解决targetSdkVersion的问题的吗29@SundeepBadhotiya我已经用最新的ics开放vpn源代码更新了源代码。请注意,这是不推荐的。与其使用非自己构建的库修复旧版本的软件,不如使用最新版本的上游软件。由于VPN软件对安全敏感,因此没有理由使用旧版本。正确。对于那些想暂时解决问题的人来说,这只是一个创可贴。正确的方法是将库升级到最新版本。我按照您的指示,在jniLibs文件夹中添加了libovpnexec.so文件。但我有以下错误:
W/System.err:java.io.IOException:cannotrunprogram/data/app/-=/lib/arm64/libovpnexec.so”:error=2,没有这样的文件或目录
我在清单文件中添加了以下代码:
现在它工作正常了。谢谢,这很有魅力!正如@Md.IkramulMurad所说,我们必须在清单文件中添加此标记,并在VPNLaunchHelper.java中进行更改。