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

2024-02-14 15:04

本文主要是介绍strongswan开源客户端项目排错运行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、引言

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

2、项目简单介绍

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

3、主要问题

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

链接: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文件,把里面的内容全部替换从下面代码块中的内容

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.cifneq ($(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/libstrongswanifneq ($(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
endifLOCAL_CFLAGS := $(strongswan_CFLAGS) \-DPLUGINS='"$(strongswan_CHARON_PLUGINS)"'ifneq ($(strongswan_USE_BYOD),)
LOCAL_CFLAGS += -DPLUGINS_BYOD='"$(strongswan_BYOD_PLUGINS)"'
endifLOCAL_MODULE := libandroidbridgeLOCAL_MODULE_TAGS := optionalLOCAL_ARM_MODE := armLOCAL_PRELINK_MODULE := falseLOCAL_LDLIBS := -llogLOCAL_SHARED_LIBRARIES := libstrongswan libipsec libcharonifneq ($(strongswan_USE_BYOD),)
LOCAL_SHARED_LIBRARIES += libimcv libtncif libtnccs libtpmtss
endifinclude $(BUILD_SHARED_LIBRARY)

4.5、配置gradle的jdk版本

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

5、最终运行效果

 6、后续修改建议

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

这篇关于strongswan开源客户端项目排错运行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/708823

相关文章

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项