Android SDK 1.0.0

更新时间:2023-09-18 15:37:23

一、SDK兼容说明

兼容项 兼容内容
系统版本 Android 5.0+
Java版本 1.8+
适用架构 armeabi-v7a, arm64-v8a

二、集成SDK

1.导入securelink-sdk-android.aar 和 mars-xlog-1.2.6.aar

  1. 把securelink-sdk-android.aar 和 mars-xlog-1.2.6.aar 复制到工程libs目录下。如果您的APP也使用了mars-xlog,这里就不需要添加,但建议使用相同的版本号,目前最新版本是1.2.6。

  2. 在项目的build.gradle中添加依赖

    方式一(推荐方式):

    dependencies {
      ...
        
      // 添加AAR包
      implementation files('libs/securelink-sdk-android.aar')
      implementation files('libs/mars-xlog-1.2.6.aar')
    }
    

    旧版本AGP的可能不支持,如果报错,请使用方式二。

    方式二:

    repositories {
        flatDir {
            dirs 'libs'
        }
    }
    
    dependencies {
      ...
        
      // 添加AAR包
      implementation(name: 'securelink-sdk-android', ext: 'aar')
      implementation(name: 'mars-xlog-1.2.6', ext: 'aar')
    }
    

2. 配置ABI

目前我们提供armeabi-v7a, arm64-v8a 两种类型的ABI,您可以根据项目中使用到的ABI进行配置:

defaultConfig {
  ...
    
	ndk{
		// 设置您需要的ABI
		abiFilters "armeabi-v7a", "arm64-v8a"
	}
}

三、调用SDK

如果应用是多进程架构,SecureLink SDK 只能在应用的主进程中调用。

1. 初始化SecureLink SDK

调用如下代码初始化SecureLink SDK。

import com.wangsu.sdwanvpn.sdk.WSVpnConfig;
import com.wangsu.sdwanvpn.sdk.WSVpnManager;

WSVpnConfig vpnConfig = new WSVPnConfig();
vpnConfig.setUserName("xxx");
vpnConfig.setPassword("xxx");
vpnConfig.setSdkToken("xxx");
WSVpnManager.getInstance().init(this.getApplicationContext(), vpnConfig);

初始化函数定义如下:

/***
 * 初始化SecureLink SDK
 * @param context ApplicationContext
 * @param config WSVpnConfig(认证配置)
 */
public void init(Context context, WSVpnConfig config);

WSVpnConfig定义如下:

public class WSVpnConfig {
	...
  
  /***
   * 设置用户名
   * @param username 用户名,设置为null会抛NullPointerException
   */
  public void setUserName(String username);
  
  /***
   * 设置密码
   * @param password 密码,设置为null会抛NullPointerException
   */  
  public void setPassword(String password);
  
  /***
   * 设置sdkToken
   * @param sdkToken sdk鉴权成功的token, 通过应用后台向网宿后台申请的sdkToken,
   *                 设置为null会抛NullPointerException
   */  
  public void setSdkToken(String sdkToken);
}

2. 启动VPN

调用如下代码启动VPN,由于启动会比较耗时,需要在子线程中执行。

import com.wangsu.sdwanvpn.sdk.WSVpnManager;

WSVpnListener vpnListener = new WSVpnListener() {
  @Override
  public void onError(int code, String msg, Bundle bundle) {
    // VPN启动失败
    Log.e(TAG, "onError: code=" + code + ", msg=" + msg);
    ...
  }
  
  @Override
  public void onConnected() {
    // VPN已连接成功,可以开始请求权限内资源
    Log.i(TAG, "onConnected");
    ...
  }
  
  @Override
  public void onDisconnected(DisconnectReason disconnectReason) {
    // VPN连接已断开,断开原因详见disconnectReason
    Log.i(TAG, "onDisconnected, reason=" + disconnectReason);
    ...
  }
}

WSVpnManager.getInstance().start(vpnListener);

启动错误码说明

错误码 错误描述 最佳实践
1000 包名指纹校验不通过 打包应用时,请使用在控制台创建的APP的包名或指纹,否则鉴权将无法通过
1002 SDK 版本校验不通过 获取SDK配置时发生内部错误,请联系网宿技术支持
2001 企业标识不存在 请联系企业管理员或网宿技术支持确认企业标识是否变更或服务是否存在
2005 用户名或者密码错误,请重新输入 提示用户确认用户名或密码
2006 登录设备已达上限 若您购买了客户端同时在线的增值服务,SecureLink会限制可登录设备的数量上限。请提示用户可退出其它设备再登录
2007 账号已禁用, 请联系企业管理员 提示用户账号已被禁用
2022 账号到期,请联系企业管理员 提示用户账号过期
2032 错误次数超限,账号已锁定 提示用户输入错误次数超限,账号已被锁定
2041 密码已到期,请重置后登录 提示用户密码已到期
2031 账号已在其它设备登录 SecureLink的默认设备规则为后手踢前手,即新设备可以抢占旧设备。建议提示用户: 账号已在其他设备登录,如非本人操作,请立即修改密码
2048 LDAP认证失败,请稍后重试 稍后重新调用WSCtrl initWithConfiguration 接口, 若仍旧失败,请联系企业管理员或网宿技术支持确认LDAP服务是否有异常
2063 非法 SDK TOKEN 请检查 SDK 鉴权逻辑,并重新进行SDK鉴权
6802 获取SDK配置,内部错误 请联系网宿技术支持,详细信息请看logcat
6803 SDK鉴权,内部错误 请联系网宿技术支持,详细信息请看logcat
6804 刷新Token,内部错误 请联系网宿技术支持,详细信息请看logcat
6805 刷新Token过期,请重新登录 Token过期,请重新获取SDK TOKEN,然后重新启动SDK
6806 获取VPN配置,内部错误 请联系网宿技术支持,详细信息请看logcat
6807 无可用的安全网关 请检查网络连接后重试,若仍旧失败,请联系网宿技术支持
6808 配置文件找不到 请联系网宿技术支持
6809 配置内容不合法 请联系网宿技术支持
6810 用户拒绝开启VPN 提示用户需要开启VPN才可以使用
6811 当前手机不支持VPN 当前手机不支持VPN
6812 绑定VPN服务失败 请尝试重新调用start接口

断开原因

断开原因 描述 最佳实践
UNKNOWN_ERROR 未知错误 请联系网宿技术支持
NETWORK_ERROR 网络错误 请检查网络再尝试调用start接口
AUTH_FAIL 鉴权失败,可能是:账号被禁用 或 账号过期 或 被踢下线 请重新调用start接口获取原因
VPN_CONFIG_ERROR 配置错误 请联系联系网宿技术支持
VPN_CONFIG_VERIFY_ERROR 配置校验失败 请联系联系网宿技术支持
CONNECTION_TIMEOUT 连接超时 请检查网络再尝试调用start接口
TUN_SETUP_FAILED TUN网卡设置失败 请联系联系网宿技术支持
CLOSE_VPN_BY_USER 用户调用stop接口
CLOSE_VPN_BY_SYSTEM 用户在设置界面关闭VPN 或 用户开启另一个VPN应用 进入应用重新启动SDK
REFRESH_TOKEN_EXPIRED 超过刷新TOKEN的有效时间,需要从头开始登录,重新获取sdkToken 重新获取sdkToken,初始化SDK,然后启动VPN
VPN_SERVICE_DISCONNECTED VPN服务异常断开,可能是VPN进程挂掉 尝试重新调用start

3. 关闭VPN

当您暂时不需要访问权限内资源时,可以调用如下代码关闭VPN:

WSVpnManager.getInstance().stop();

4. 退出账号登录

当用户退出登录时,请调用如下代码,退出VPN,否则无法重新登录。

WSVpnManager.getInstance().release();

5. 应用退到后台

由于VPN比较耗电,如果没有特殊需求,建议退到后台一段时间后,关闭VPN,回到前台需要访问权限内资源时,重新开启VPN。

四、用户权限说明

  • 由于SecureLink SDK需要使用VPN,因此当开启VPN时,SDK会主动申请VPN使用权限,如果用户拒绝,则会启动失败。

  • AndroidManifest.xml中定义的用户权限:

    <!-- 网络访问权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- VPN服务需要监听网络切换 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- VPN服务申请为前台服务,避免被系统杀死 -->
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    

    如上权限已通过aar添加到应用,不需要您手动添加。

四、嵌入成功验证

Logcat过滤tag:SLS,出现如下日志表示嵌入成功:

I/SLS: SDK version: 1.0.0
...
I/SLS: Initialize succeed

注:如果出现错误日志,请联系网宿技术支持。

本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!