Android11编译第五弹:开启VPN权限

这篇具有很好参考价值的文章主要介绍了Android11编译第五弹:开启VPN权限。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题:智能货柜上线以后,因为分布在全国各地,或者在国外,遇到问题需要调试设备的时候,需要及时连接设备,查看设备信息,拉取日志。

一种方式是直接上传日志到云端,通过云端查看日志信息,但是耗费流量,而且浪费云端资源;

二种方式:采用VPN网络,通过adb tcp连接设备,就能访问设备,拉取日志,查看设备状态。

采用第二种方案比较好。

一、什么是VPN网络?

虚拟专用网(VPN)是一条通信隧道,可以在不可信的中间网络上提供身份认证和数据通信的点对点传输。大多数VPN使用加密技术来保护封装的通信数据,但是加密对于VPN 连接而言并非必需的。

简单来说,设备不论连接什么类型的网络,只要和VPN服务器提供的网络,那么这些设备就在VPN网络中,相当于在同一个虚拟局域网内。因此就可以使用adb访问智能货柜设备。

因为需要支持VPN访问,因此AOSP需要定制支持VPN权限。

二、集成步骤

2.1 去掉VPN授权确认弹窗

应用连接VPN,需要授权弹窗用户确认,默认直接授权。

frameworks/base/packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java

mService = IConnectivityManager.Stub.asInterface(
                ServiceManager.getService(Context.CONNECTIVITY_SERVICE));

     // ==== modify start ==== zhouronghua VPN Authorize
	 try {
            if (mService.prepareVpn(null, mPackage, UserHandle.myUserId())) {
                // Authorize this app to initiate VPN connections in the future without user
                // intervention.
                mService.setVpnPackageAuthorization(mPackage, UserHandle.myUserId(), mVpnType);
                setResult(RESULT_OK);
		finish();
            }
        } catch (Exception e) {
            Log.e(TAG, "onClick", e);
        }
        // ==== modify end ====
        if (prepareVpn()) {
            setResult(RESULT_OK);
            finish();
            return;
        }
       // ==== modify start ==== zhouronghua VPN Authorize
       /** View view = View.inflate(this, R.layout.confirm, null);
        ((TextView) view.findViewById(R.id.warning)).setText(
                Html.fromHtml(getString(R.string.warning, getVpnLabel()),
                        this, null /* tagHandler ));
        mAlertParams.mTitle = getText(R.string.prompt);
        mAlertParams.mPositiveButtonText = getText(android.R.string.ok);
        mAlertParams.mPositiveButtonListener = this;
        getWindow().setCloseOnTouchOutside(false);
        getWindow().addPrivateFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
        Button button = mAlert.getButton(DialogInterface.BUTTON_POSITIVE);
        button.setFilterTouchesWhenObscured(true); ***/
        // ==== modify end ====
    }

 2.2 关闭VPN授权申请

frameworks/base/services/core/java/com/android/server/connectivity/Vpn.java

    // ==== modidy start ==== zhouronghua 
    private void enforceControlPermission() {
       // mContext.enforceCallingPermission(Manifest.permission.CONTROL_VPN, "Unauthorized Caller");
    }

    private void enforceControlPermissionOrInternalCaller() {
        // Require the caller to be either an application with CONTROL_VPN permission or a process
        // in the system server.
        //mContext.enforceCallingOrSelfPermission(Manifest.permission.CONTROL_VPN,
          //      "Unauthorized Caller");
    }

    private void enforceSettingsPermission() {
       // mContext.enforceCallingOrSelfPermission(Manifest.permission.NETWORK_SETTINGS,
         //       "Unauthorized Caller");
    }
    // ==== modidy end ==== 

 注释掉VPN强制授权。2.1已经自动授权了。

2.3 集成openvpn APK

需要继承一个VPN客户端,用于连接VPN服务器。

openvpn.apk内置到系统中。

前面第一弹已经写过,此处就不再重复。

packages/apps/Sandstar/Sandstar/Android.mk

include $(CLEAR_VARS)
LOCAL_MODULE        := openvpn
LOCAL_MODULE_TAGS   := optional
LOCAL_MODULE_CLASS  := APPS
LOCAL_CERTIFICATE   := platform
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_SRC_FILES     := openvpn.apk
LOCAL_DEX_PREOPT    := false
include $(BUILD_PREBUILT)

这样,使用VPN的时候,下发VPN key, 然后客户端通过VPN key连接网络。文章来源地址https://www.toymoban.com/news/detail-708688.html

到了这里,关于Android11编译第五弹:开启VPN权限的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 力扣刷MySQL-第五弹(详细讲解)

     🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:力扣刷题讲解-MySQL 🍹文章作者技术和水平很有限,如果文中出现错误,希望大家能指正🙏 📜 感谢大家的关注! ❤️ 目录 🚀寻找用

    2024年01月22日
    浏览(33)
  • C++第五弹---类与对象(二)

    ✨ 个人主页:   熬夜学编程的小林 💗 系列专栏:   【C语言详解】   【数据结构详解】 【C++详解】 类与对象 1、类对象模型 1.1、如何计算类对象的大小 1.2、类对象的存储方式猜测 1.3、结构体内存对齐规则 2、this指针 2.1、this指针的引出 2.2、this指针的特性 2.3、C语言和

    2024年03月19日
    浏览(21)
  • C语言第五弹---分支语句(上)

    ✨ 个人主页: 熬夜学编程的小林 💗 系列专栏: 【C语言详解】 【数据结构详解】 C语言是结构化的程序设计语言,这里的结构指的是 顺序结构、选择结构、循环结构 ,C语言是能够实现这三种结构的,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或

    2024年01月22日
    浏览(30)
  • 深入理解数据结构第五弹——排序(2)——快速排序

    排序(1): 深入了解数据结构第四弹——排序(1)——插入排序和希尔排序-CSDN博客 前言: 在前面我们已经讲过了几种排序方式,他们的效率有快有慢,今天我们来学习一种非常高效的排序方式——快速排序 目录 一、快速排序的思想 二、快速排序的递归实现 2.1 霍尔法

    2024年04月15日
    浏览(38)
  • Android Framework 动态更新插拔设备节点执行权限

    TF卡设备节点是插上之后动态添加,所以不能通过初始化设备节点权限来解决,需要监听TF插入事件,在init.rc 监听插入后动态更新设备节点执行权限 添加插拔TF卡监听 frameworks/base/services/core/java/com/android/server/StorageManagerService.java 在private void mount(VolumeInfo vol){}中添加 SystemProp

    2024年02月12日
    浏览(26)
  • web爬虫第五弹 - JS逆向入门(猿人学第一题)

    0- 前言 爬虫是一门需要实战的学问。 而对于初学者来说,要想学好反爬,js逆向则是敲门砖。今天给大家带来一个js逆向入门实例,接下来我们一步一步来感受下入门的逆向是什么样的。该案例选自猿人学练习题。猿人学第一题 1- 拿到需求 进入页面拿到需求我们先不要急着

    2024年02月14日
    浏览(24)
  • k8s控制器之DaemonSet--第五弹更新 DaemonSet

    DaemonSet 有两种更新策略: OnDelete : 使用 OnDelete 更新策略时,在更新 DaemonSet 模板后,只有当你手动删除老的 DaemonSet pods 之后,新的 DaemonSet Pod 才会 被自动创建。跟 Kubernetes 1.6 以前的版本类似。 RollingUpdate : 这是默认的更新策略。使用 RollingUpdate 更新策略时,在更新 DaemonSe

    2024年02月11日
    浏览(31)
  • 互联网Java工程师面试题·Java 并发编程篇·第五弹

    目录 52、什么是线程池? 为什么要使用它? 53、怎么检测一个线程是否拥有锁? 54、你如何在 Java 中获取线程堆栈? 55、JVM 中哪个参数是用来控制线程的栈堆栈小的? 56、Thread 类中的 yield 方法有什么作用? 57、Java 中 ConcurrentHashMap 的并发度是什么? 58、Java 中 Semaphore 是什么

    2024年02月07日
    浏览(56)
  • k8s服务发现之第五弹--使用 Service 连接到应用

    通过前面教程的学习,我们已经可以将容器化的应用程序在 Kubernetes 中运行起来,并且发布到 Kubernetes 内/外的网络上。 通常,Docker 使用一种 host-private 的联网方式,在此情况下,只有两个容器都在同一个节点(主机)上时,一个容器才可以通过网络连接另一个容器。为了使

    2024年02月15日
    浏览(31)
  • Android Framework | AOSP源码下载及编译指南(基于Android13)

    AOSP(Android Open Source Project)是Android操作系统的开源项目,通过下载和编译AOSP源码,您可以获得原始的Android系统,并进行定制和开发。本教程将向您介绍如何下载AOSP源码并进行编译的步骤。 如何只是浏览查看AOSP源码,则没必要下载源码,可以使用google提供的Code Search工具进

    2024年01月16日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包