strongswan开源客户端项目排错运行

news/2024/7/10 20:28:40 标签: 开源, java, 网络, android

1、引言

        开源项目不少人都听说过,并且对于许多人来说开源项目似乎代表着某种高大上的深奥东西,但其实开源项目没有想象中这么难,只要仔细琢磨,理清楚逻辑,那么开源项目其实也和你平常写的项目差不多,无非就是耦合度更高一些罢了。在开源项目中其实改写不是最难的一块,如何让项目正确运行起来才是关键,这里就以strongswan开源客户端为例,带大家一起把这个项目运行起来。

2、项目简单介绍

        strongswan是基于安卓开发的VPN开源客户端程序,目前已经实现了最新版本的ikev2VPN隧道通信技术的支持,双证书验证加上本地密码的多重数据校验方式,保证了数据的更安全传输,稳定性也堪称业界顶尖,是目前深受推崇的安卓VPN客户端之一。

3、主要问题

        在这个项目导入后主要遇见的问题就是ndk的配置和静态链接库的添加,这里我是直接使用已经编译好的静态链接库,由于strongswan客户端的静态链接库使用的编译环境和方式比较复杂,windows系统中无法编译成功,所以使用已经编译好的库上手更快,但是如果要更改底层核心功能,那就必须在linux系统上配置相关环境进行编译,使用到的资源放在下面网盘中,请自取,文件一个G左右。

java">链接:https://pan.baidu.com/s/1cBTOLesZU93MXnmne2IcgQ?pwd=bd5o 
提取码:bd5o 
复制这段内容后打开百度网盘手机App,操作更方便哦

4、操作步骤

4.1、导入项目配置NDK路径

        从网盘中下载项目,将压缩包解压,解压后的文件夹中android.zip字样的压缩包就是项目源码,将其放在合适位置,打开为一个单独的项目,待加载好各项数据后在local.properties文件中配置NDK路径,ndk版本请使用和我相同的版本,并用我提供的NDK替换本地同名ndk,这个操作很关键,不这样做无法运行项目。配置后ndk路径后同步一下。如下图所示:

4.2、添加后缀

        在app目录下的build.gradle文件中两个NDK命令行调用那里添加.cmd文件后缀,操作完保存同步一下,如下图所示:

4.3、添加静态库

        在下载的文件夹中把静态库复制粘贴在项目中,如下图所示:

4.4、修改Android.mk文件

        复制下方内容,在jni目录下找到Android.mk文件,把里面的内容全部替换从下面代码块中的内容

java">LOCAL_PATH := $(call my-dir)
APP_ALLOW_MISSING_DEPS :=true
include $(CLEAR_VARS)

# copy-n-paste from Makefile.am
LOCAL_SRC_FILES := \
android_jni.c \
backend/android_attr.c \
backend/android_creds.c \
backend/android_fetcher.c \
backend/android_dns_proxy.c \
backend/android_private_key.c \
backend/android_scheduler.c \
backend/android_service.c \
charonservice.c \
kernel/android_ipsec.c \
kernel/android_net.c \
kernel/network_manager.c \
vpnservice_builder.c

ifneq ($(strongswan_USE_BYOD),)
LOCAL_SRC_FILES += \
byod/imc_android_state.c \
byod/imc_android.c
endif

# build libandroidbridge -------------------------------------------------------

LOCAL_C_INCLUDES += \
	$(strongswan_PATH)/src/libipsec \
	$(strongswan_PATH)/src/libcharon \
	$(strongswan_PATH)/src/libstrongswan

ifneq ($(strongswan_USE_BYOD),)
LOCAL_C_INCLUDES += \
	$(strongswan_PATH)/src/libimcv \
	$(strongswan_PATH)/src/libtncif \
	$(strongswan_PATH)/src/libtnccs \
	$(strongswan_PATH)/src/libtpmtss \
	$(strongswan_PATH)/src/libtls
endif

LOCAL_CFLAGS := $(strongswan_CFLAGS) \
	-DPLUGINS='"$(strongswan_CHARON_PLUGINS)"'

ifneq ($(strongswan_USE_BYOD),)
LOCAL_CFLAGS += -DPLUGINS_BYOD='"$(strongswan_BYOD_PLUGINS)"'
endif

LOCAL_MODULE := libandroidbridge

LOCAL_MODULE_TAGS := optional

LOCAL_ARM_MODE := arm

LOCAL_PRELINK_MODULE := false

LOCAL_LDLIBS := -llog

LOCAL_SHARED_LIBRARIES := libstrongswan libipsec libcharon

ifneq ($(strongswan_USE_BYOD),)
LOCAL_SHARED_LIBRARIES += libimcv libtncif libtnccs libtpmtss
endif

include $(BUILD_SHARED_LIBRARY)

4.5、配置gradle的jdk版本

        在下图中所示位置修改gradle的jdk配置为jdk11,没有就再安装一个。

5、最终运行效果

 6、后续修改建议

        如果要研究源码,直接把不同位置分别注释掉,查看效果,这样就能分析出哪里才是关键源码。


http://www.niftyadmin.cn/n/5376657.html

相关文章

跟着pink老师前端入门教程-day25

4、阿里百秀首页案例 4.1 技术选型 方案:我们采取响应式页面开发方案 技术:bootstrap框架 设计图: 本设计图采用 1280px 设计尺寸 4.2 屏幕划分分析 ① 屏幕缩放发现 中屏幕 和 大屏幕布局 是一致的。 因此我们列 定义为 col-md- 就…

OpenAI ChatGPT 记忆功能怎么实现?

你的聊天助手现在能“记住”你的对话了! 2月14日凌晨,OpenAI宣布正在测试ChatGPT的新功能——记住用户提问内容,并自由控制内存。这意味着,ChatGPT能帮你记住那些重要的聊天内容,让你的对话更流畅、更自然。 想象一下…

收集域名信息

进行渗透测试之前,最重要的一步就是信息收集,在这个阶段,我们要尽可能 地收集目标组织的信息。所谓“知己知彼,百战不殆”,我们越是了解测试目标,测试 的工作就越容易。在信息收集中,最主要的就是收集服务器…

Django学习全纪录:Django视图和路由的配置,应用的创建以及注册

导言 在之前的文章中,我们已经将Django的环境部署完成,包括一些注意事项以及前期工作,都已经完成。这篇文章,我们就可以正式开始干活了。 学习目标 1、学习创建应用以及注册APP 2、初步认识视图和路由,以及编写简单的代码 3、启动应用观察变化 创建第一个应用(APP) …

Virt a Mate(VAM)游戏折腾记录

如有更新见原文:https://blog.iyatt.com/?p13283 1 前言 如果在网上看到有些视频名字带有 VAM 的,可能就是玩这个游戏录屏的。这个游戏可以建模、操作模型动作、构建场景等等。之前大致知道有这么个东西,只是电脑配置太差了,新…

机器学习:Pooling层作用及反向传播

CNN网络在反向传播中需要逐层向前求梯度,然而pooling层没有可学习的参数,那它是如何进行反向传播的呢?此外,CNN中为什么要加pooling层,它的作用是什么? Pooling层 CNN一般采用average pooling或max pooli…

whisperspeech 英文TTS的实现

以下代码成功运行在 colab 中,需要修改运行时类型为 T4 GPU。 !pip install -Uqq WhisperSpeech def is_colab():try: import google.colab; return Trueexcept: return Falseimport torch # if not torch.cuda.is_available(): # if is_colab(): raise BaseEx…

B端系统从0到1:有几步,其中需求分析要做啥?

一款B系统从无到有都经历了啥,而其中的需求分析又要做什么?贝格前端工场给老铁们做一下分析,文章写作不易,如果咱们有界面设计和前端开发需求,别忘了私信我呦,开始了。 一、B端系统从0到1都有哪些要走的步骤…