Android11反射限制-网络连接相关预研

一、背景

1、预研环境

 (1)Android系统:Android11,Api30

(2)面板机设备:RK3568,E8设备

2、项目背景

   E8产品预研
RK3568 E8产品预研:网络连接部分预研、

3、预研网络类型

(1)有线网络:以太网

(2)WLAN网络:无线局域网

二、问题表现及原因

1、以太网连接

(1)无法连接以太网:涉及反射部分功能不可用:获取有线网配置的所有功能,包括有线网络管理类、获取IP配置、获取IP地址、获取子网掩码、获取网关、获取域名、设置静态IP置等;

(2)有线网网络监听不可用:room层三码信息获取不到,设备涉及网络监听部分Activity没有初始化。

2、WLAN网络连接(Wifi网络)

(1)无法连接Wifi网络:代码涉及WIfiManager等部分API弃用;

(2)无法设置Wifi静态IP:涉及反射不可用。

(3)设备仅支持连接2.4GHz频带WLAN网络。

3、系统有线网和Wifi网络不能共存

(1)连接Wifi网络后,插入有线网后,Wifi网络会断开。

(2)连接有线网络情况下,无法连接Wifi网络。

三、主要问题及尝试解决方案

1、以太网连接 — 反射限制问题:

(1)使用三方库屏蔽反射限制

三方库依赖:RestrictionBypass、FreeReflection、hiddenapibypass(https://github.com/LSPosed/AndroidHiddenApiBypass)
结果:目前屏蔽反射限制无效果

(2)导入frameworks.jar包,直接调用隐藏类和隐藏方法

新增类名:EthernetHelperFit11.java
导入目录:项目lib_common\src\main\res\libs\framework.jar
下载地址:https://gitee.com/xiayiye5/framework-jar-demo/tree/master/app/libs
lib_common模块build.gradle下配置依赖调用优先级:提高framework.jar包依赖调用优先级高于AndroidSDK

实现效果:编译通过,实现有线网网络的有效连通且可用。
存在风险:由于framework.jar包与AndroidSDK版本不同的问题,存在一定的类调用风险。

2、WLAN网络连接(Wifi网络)

(1)Wifi连接网络不可用问题(WifiManager弃用)

在 Android 10 (API 级别 29) 或更高版本 设备上,使用官方推荐API实现Wifi网络的连接。(适用于对等连接的 WLAN 网络请求 API | Android 开发者 | Android Developers (google.cn))
实现效果:可连接2.4GHz频带Wifi网络且可用(目前设备仅支持连接2.4GHz频带网络)
(2)设置Wifi静态IP部分—反射限制问题

解决办法同上述有线网反射限制问题解决办法一样:直接调用隐藏类配置静态Ip相关办法。

四、目前可考虑执行方案

1、Room层支持,单独封装有线网络相关API调用jar包,依照上述导入framework.jar包依赖,与AndroidSDK共存的方式直接进行对隐藏API的调用。

2、Room层支持,集成有线网相关隐藏类和方法到Room层,可供应用层继续使用反射调用。

3、将下方绕过非SDK接口调用限制命令集成到Room层,可解除对隐藏API和方法的调用限制。

 官方对于非SDK接口的限制:针对非 SDK 接口的限制  |  Google Play  |  Android Developers

猜你喜欢

转载自blog.csdn.net/qq_46269365/article/details/130582030
今日推荐