• Android KR3399 原生系统 wlan0与eth0共存调试


    大伙我又回分享开发心得了,今天是对wifi与以太网共存在系统上的调试。
    网上有很多案例,我这边也是根据网上某些文章以及现有板卡的情况进行调试得出来的结果,废话不多说。

    1.系统板卡情况:公司提供的已经弄好的板卡,已经wlan0与eth0两者存在;
    2.原生系统 KR3399 优化步骤:
      一:代码修改

    • frameworks/base/services/core/java/com/android/server/ConnectivityService.java

           修改这里的位置代码,防止已连上的网卡被关闭

    1. private static final boolean ENABLE_NETWORK_COEXIST = true;//新增
    2. private void teardownUnneededNetwork(NetworkAgentInfo nai) {
    3. if (nai.numRequestNetworkRequests() != 0) {
    4. for (int i = 0; i < nai.numNetworkRequests(); i++) {
    5. NetworkRequest nr = nai.requestAt(i);
    6. // Ignore listening requests.
    7. if (nr.isListen()) continue;
    8. loge("Dead network still had at least " + nr);
    9. break;
    10. }
    11. }
    12. //nai.asyncChannel.disconnect(); 删除
    13. //新增
    14. if(!ENABLE_NETWORK_COEXIST){
    15. nai.asyncChannel.disconnect();
    16. }
    17. }
    • frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java    修改这里的位置代码,降低网络评分;ps:我在这边调试时会出现以太网一直刷新问题,如果你那边不出现就可以忽略。
    1. private final static int NETWORK_SCORE = 30;//将 70 降低到 30
    2. private static final SparseArray sTransports = new SparseArray();
    3. static {
    4. // LowpanInterfaceTracker.NETWORK_SCORE
    5. sTransports.put(NetworkCapabilities.TRANSPORT_LOWPAN,
    6. new TransportInfo(ConnectivityManager.TYPE_NONE, 30));
    7. // WifiAwareDataPathStateManager.NETWORK_FACTORY_SCORE_AVAIL
    8. sTransports.put(NetworkCapabilities.TRANSPORT_WIFI_AWARE,
    9. new TransportInfo(ConnectivityManager.TYPE_NONE, 1));
    10. // EthernetNetworkFactory.NETWORK_SCORE
    11. sTransports.put(NetworkCapabilities.TRANSPORT_ETHERNET,
    12. new TransportInfo(ConnectivityManager.TYPE_ETHERNET, 30));//将 70 降低到 30
    13. // BluetoothTetheringNetworkFactory.NETWORK_SCORE
    14. sTransports.put(NetworkCapabilities.TRANSPORT_BLUETOOTH,
    15. new TransportInfo(ConnectivityManager.TYPE_BLUETOOTH, 69));
    16. // WifiNetworkFactory.SCORE_FILTER / NetworkAgent.WIFI_BASE_SCORE
    17. sTransports.put(NetworkCapabilities.TRANSPORT_WIFI,
    18. new TransportInfo(ConnectivityManager.TYPE_WIFI, 60));
    19. // TelephonyNetworkFactory.TELEPHONY_NETWORK_SCORE
    20. sTransports.put(NetworkCapabilities.TRANSPORT_CELLULAR,
    21. new TransportInfo(ConnectivityManager.TYPE_MOBILE, 50));
    22. }

     二:新增脚本

    •  写一个能用的xxx.sh脚本(ps:这边我就以xxx.sh来代替,里面具体代码就不分享出来了,网上都有) ,将其放入vendor/rockchip/common/wifi文件里(ps:为什么放这里呢,以为找了半天只有这可以编译脚本放入系统镜像),并修复vendor/rockchip/common/wifi/wifi.mk里;
              加这个就是为了将现有的脚本编译到系统镜像中,具体位置为 /vendor/bin/xxx.sh 
              ps:脚本里如果需要以太网能被访问,记得加网关;
      PRODUCT_COPY_FILES +=  $(CUR_PATH)/wifi/xxx.sh:$(TARGET_COPY_OUT_VENDOR)/bin/xxx.sh
    •   device/rockchip/common/sepolicy/vendor 文件夹 新增xxx.te文件
       
      1. type xxx, domain;
      2. type xxx_exec, exec_type, vendor_file_type, file_type;
      3. init_daemon_domain(xxx)
    • device/rockchip/common/sepolicy/vendor/file_contexts 新增
      /vendor/bin/xxx\.sh                        u:object_r:xxx_exec:s0
    • 重新编译就行

  • 相关阅读:
    wireshark打开tcpdump抓的包 vwr: Invalid data length runs past the end of the record
    基于springboot+vue的线上教育系统(源码+论文)
    neo4j
    HTML表格与表单
    <Linux系统复习>信号
    airtest部署安装与脚本执行
    Multisim14.0安装(宝宝级步骤)
    Java SubList 类 Java subList方法 Java ArrayList$SubList 方法特点 SubList 用法
    银行竞争度-地级市HHI+CRn(2000-2022年)
    Java 某市教育局综合信息管理平台
  • 原文地址:https://blog.csdn.net/Alin693/article/details/127966670