Android12 ethernet和wifi共存

1.修改网络优先走wifi

复制代码
packages/modules/Connectivity/service/src/com/android/server/connectivity/NetworkRanker.java   
 
@@ -44,7 +44,7 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 import java.util.function.Predicate;
-
+import android.util.Log;
 /**
  * A class that knows how to find the best network matching a request out of a list of networks.
  */
@@ -85,7 +85,7 @@ public class NetworkRanker {
     }
 
     // Transport preference order, if it comes down to that.
-    private static final int[] PREFERRED_TRANSPORTS_ORDER = { TRANSPORTETHERNET, TRANSPORTWIFI,
+    private static final int[] PREFERRED_TRANSPORTS_ORDER = { TRANSPORTWIFI,TRANSPORTETHERNET,
             TRANSPORTBLUETOOTH, TRANSPORTCELLULAR };
 
     // Function used to partition a list into two working areas depending on whether they

2.修改NETWORK_SCORE(这一步好像没什么用)

复制代码
--- a/java/com/android/server/ethernet/EthernetNetworkFactory.java
+++ b/java/com/android/server/ethernet/EthernetNetworkFactory.java
@@ -70,7 +70,9 @@ public class EthernetNetworkFactory extends NetworkFactory {
     private final static String TAG = EthernetNetworkFactory.class.getSimpleName();
     final static boolean DBG = true;
 
-    private final static int NETWORK_SCORE = 70;
+    private final static int NETWORK_SCORE = 30;
 
 
@@ -409,8 +412,10 @@ public class EthernetNetworkFactory extends NetworkFactory {
             sTransports.put(NetworkCapabilities.TRANSPORTWIFIAWARE,
                     new TransportInfo(ConnectivityManager.TYPE_NONE, 1));
             // EthernetNetworkFactory.NETWORK_SCORE
             sTransports.put(NetworkCapabilities.TRANSPORT_ETHERNET,
-                    new TransportInfo(ConnectivityManager.TYPE_ETHERNET, 70));
+                    new TransportInfo(ConnectivityManager.TYPE_ETHERNET, 30));
             // BluetoothTetheringNetworkFactory.NETWORK_SCORE
             sTransports.put(NetworkCapabilities.TRANSPORT_BLUETOOTH,
                     new TransportInfo(ConnectivityManager.TYPE_BLUETOOTH, 69));

3.修改阻止disable eth0

packages\modules\NetworkStack\common\moduleutils\src\android\net\ip\InterfaceController.java

复制代码
--- a/common/moduleutils/src/android/net/ip/InterfaceController.java
+++ b/common/moduleutils/src/android/net/ip/InterfaceController.java
@@ -30,7 +30,7 @@ import android.system.OsConstants;
 import java.net.Inet4Address;
 import java.net.InetAddress;
 
-
+import android.util.Log;
 /**
  * Encapsulates the multiple IP configuration operations performed on an interface.
  *
@@ -102,6 +102,11 @@ public class InterfaceController {
 
     private boolean setEnableIPv6(boolean enabled) {
         try {
+                       if(mIfName.equals("eth0")&& enabled == false)
+                       {
+                               Log.e("setEnableIPv6","eth0 skip disable +++");
+                               return false;
+                       }
             mNetd.interfaceSetEnableIPv6(mIfName, enabled);
         } catch (RemoteException | ServiceSpecificException e) {
             logError("%s IPv6 failed: %s", (enabled ? "enabling" : "disabling"), e);
@@ -197,6 +202,11 @@ public class InterfaceController {
      */
     public boolean clearAllAddresses() {
         try {
+                       if(mIfName.equals("eth0"))
+                       {
+                               Log.e("clearAllAddresses","eth0 skip clear +++");
+                               return false;
+                       }
             mNetd.interfaceClearAddrs(mIfName);
         } catch (Exception e) {
             logError("Failed to clear addresses: %s", e);

4.开机后在rc中自动添加一下路由表配置

路由表设置

ip ru add from all lookup main pref 9000

相关推荐
Java小白,一起学习2 小时前
STM32新建工程(标准库官网下载)
stm32·单片机·嵌入式硬件
vickycheung32 小时前
RK3588增加Xenomai3实时补丁
经验分享·嵌入式硬件·arm 嵌入式开发
修炼者4 小时前
Android Studio的技巧
android·android studio
雨白4 小时前
ARouter 入门指南:从基本跳转到对象传递
android
贝塔实验室4 小时前
红外编解码彻底解析
网络·嵌入式硬件·信息与通信·信号处理·代码规范·基带工程·精益工程
小尧嵌入式4 小时前
C++基础语法总结
开发语言·c++·stm32·单片机·嵌入式硬件·算法
用户69371750013845 小时前
17.Kotlin 类:类的形态(四):枚举类 (Enum Class)
android·后端·kotlin
h***34635 小时前
MS SQL Server 实战 排查多列之间的值是否重复
android·前端·后端
用户69371750013845 小时前
16.Kotlin 类:类的形态(三):密封类 (Sealed Class)
android·后端·kotlin
沐欣工作室_lvyiyi5 小时前
基于单片机的居家智能音箱系统(论文+源码)
stm32·单片机·嵌入式硬件·毕业设计·智能音箱