我正在为学校项目构建一个 VPN 应用程序(使用 v2ray 协议),我正在尝试使用这个(https://github.com/dev7dev/V2ray-Android)库,如果我只是构建提供的项目文件,但是当我创建自己的项目并按照说明导入模块时,我收到运行时错误,指出 jnilib“libtun2socks.so”文件不存在(无法运行程序“/data/app/com. example.bobvpn5-JTEQwsRle2opKu7bKLubFg==/lib/arm64/libtun2socks.so”(在目录“/data/user/0/com.example.bobvpn5/files”中):错误=2,没有这样的文件或目录)。
我分析了我的 apk 文件,该文件实际上在 apk 中,但只是未正确加载。我用这段调试代码来验证:
File file = new File(getApplicationInfo().nativeLibraryDir, "libtun2socks.so");
if (file.exists()) {
Log.d("!!!MainActivity", "libtun2socks.so exists at " + file.getAbsolutePath());
} else {
Log.e("!!!MainActivity", "libtun2socks.so does NOT exist");
}
并在提供的项目和我自己的项目上进行了测试。提供的项目显示它存在(如预期),而我的项目的调试显示它不存在。我还注意到我的项目有这个链接器错误,运行提供的项目时不会出现该错误。
在过去的两天里,我怀疑这与我的 gradle 配置有关(因为我的 gradle + AGP 版本高于提供的项目),但现在我不知道 gradle 是否是问题,因为我已经检查了我的配置 60 亿次,确保正确的 jniSrcDirs 、应用程序级别、项目级别、v2ray 级别的 gradle 配置设置等..
我可以向任何人提供帮助我的项目文件。
提前非常感谢您,我抓狂了,因为我的项目和他的项目之间几乎所有内容都是相同的。 PS我的项目只是一个准系统项目,没有可能干扰的额外代码。 .so 本机库不可能有问题,因为它们是相同的文件。并且也在具有相同架构的相同设备上运行。