当前位置: 首页 > news >正文

免费个人网站在线制作深圳网站建设力荐上榜网络

免费个人网站在线制作,深圳网站建设力荐上榜网络,萝岗移动网站建设,狼雨seo培训最近在做Amlogic T982的样机,关于以太网部分,系统Settings只有一个Ethernet的条目,没有其他任何信息,什么以太网mac地址,开关,IP地址,子网掩码,默认网关,dns, 设置代理&a…

最近在做Amlogic T982的样机,关于以太网部分,系统Settings只有一个Ethernet的条目,没有其他任何信息,什么以太网mac地址,开关,IP地址,子网掩码,默认网关,dns, 设置代理,设置静态IP这些功能统统都没有,只能自己参考Android11的代码移植过来,目前来看其他都正常,只有静态IP设置后无法保存,重启之后,依然还是dhcp  查了logcat发现如下信息:

07-26 03:24:59.141   572  2065 E DelayedDiskWrite: Error writing data file /data/misc/apexdata/com.android.tethering/misc/ethernet/ipconfig.txt
07-26 03:24:59.141   972   972 D EthernetSettings: curEtherStateETHER_STATE_CONNECTING
07-26 03:24:59.141   572   748 D EthernetNetworkFactory: updateInterface, iface: eth0, ipConfig: IP assignment: STATIC
07-26 03:24:59.141   572   748 D EthernetNetworkFactory: Static configuration: IP address 192.168.0.179/24 Gateway 192.168.0.1  DNS servers: [ 192.168.0.1 0.0.0.0 ] Domains
07-26 03:24:59.141   572   748 D EthernetNetworkFactory: Proxy settings: NONE
07-26 03:24:59.141   572   748 D EthernetNetworkFactory: , old ipConfig: IP assignment: DHCP
07-26 03:24:59.141   572   748 D EthernetNetworkFactory: Proxy settings: NONE
07-26 03:24:59.141   572   748 D EthernetNetworkFactory: , capabilities: null, old capabilities: [ Transports: ETHERNET Capabilities: NOT_METERED&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&NOT_ROAMING&NOT_CONGESTED&NOT_SUSPENDED&NOT_VCN_MANAGED LinkUpBandwidth>=100000Kbps LinkDnBandwidth>=100000Kbps Specifier: <EthernetNetworkSpecifier (eth0)> UnderlyingNetworks: Null], listener: null
07-26 03:24:59.141   572   748 D EthernetNetworkFactory: reconnecting Ethernet

看起来是在写这个文件/data/misc/apexdata/com.android.tethering/misc/ethernet/ipconfig.txt失败了

 找到相关代码位置,packages/modules/Connectivity/service-t/src/com/android/server/ethernet/EthernetConfigStore.java

发现是直接在写配置文件,也没有去判断路径文件是否存在,于是手动创建目录和文件之后,发现IP配置信息会写进去,但是重启之后发现依然还是dhcp

在write方法里面做了路径判断,路径不存在就去创建,并且把路径改成了以前的老版本的路径,

data/misc/ethernet/ipconfig.txt

修改如下:

public void write(String iface, IpConfiguration config) {
-        write(iface, config, APEX_IP_CONFIG_FILE_PATH + CONFIG_FILE);
+        //write(iface, config, APEX_IP_CONFIG_FILE_PATH + CONFIG_FILE);
+               String filePath = LEGACY_IP_CONFIG_FILE_PATH + CONFIG_FILE;
+               try {
+                       File dir = new File(LEGACY_IP_CONFIG_FILE_PATH);
+                       if (!dir.exists()) {
+                               Log.i(TAG, "write path = " + APEX_IP_CONFIG_FILE_PATH + ", dir.exists() = " + dir.exists());
+                               dir.mkdirs();
+                       }
+                       File file = new File(filePath);
+                       if (!file.exists()) {
+                               file.createNewFile();
+                       }
+                       Log.i(TAG, "write file.exists() = " + file.exists());
+                } catch (Exception e) {
+                       Log.i(TAG, "writee:" + e.getMessage());
+                }
+               write(iface, config, filePath);}

这样试了一下,发现可以正常保存和获取到静态IP信息。

以为这样就万事大吉拉?并没有,在反复测试中偶然发现设置静态IP后重启,竟然卡在开机动画无限循环,logcat也没有看到有用的信息,百思不得其解,cat data/misc/ethernet/ipconfig.txt查看了一下配置文件,竟然是空的,设置好静态IP之后,我确定查看过这个文件,IP信息已经写进去了,没想到竟然会丢失数据,于是把这个配置文件删除,再重启,发现就可以正常开机了,那这个随机丢失数据导致不能开机的问题也太致命了,这要是发给客户不得被喷死?还得继续研究一下是什么问题。

我有仔细研究了一下logcat发现了报错信息:

--------- beginning of crash
07-26 06:56:29.917   580   580 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: main
07-26 06:56:29.917   580   580 E AndroidRuntime: java.lang.RuntimeException: Failed to boot service com.android.server.ConnectivityServiceInitializer: onBootPhase threw an exception during phase 500
07-26 06:56:29.917   580   580 E AndroidRuntime:        at com.android.server.SystemServiceManager.startBootPhase(SystemServiceManager.java:297)
07-26 06:56:29.917   580   580 E AndroidRuntime:        at com.android.server.SystemServer.startOtherServices(SystemServer.java:2664)
07-26 06:56:29.917   580   580 E AndroidRuntime:        at com.android.server.SystemServer.run(SystemServer.java:938)
07-26 06:56:29.917   580   580 E AndroidRuntime:        at com.android.server.SystemServer.main(SystemServer.java:648)
07-26 06:56:29.917   580   580 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
07-26 06:56:29.917   580   580 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
07-26 06:56:29.917   580   580 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:914)
07-26 06:56:29.917   580   580 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to read from field 'int android.util.ArrayMap.mSize' on a null object reference in method 'void android.util.ArrayMap.putAll(android.util.ArrayMap)'
07-26 06:56:29.917   580   580 E AndroidRuntime:        at android.util.ArrayMap.putAll(ArrayMap.java:705)
07-26 06:56:29.917   580   580 E AndroidRuntime:        at com.android.server.ethernet.EthernetConfigStore.loadConfigFileLocked(EthernetConfigStore.java:112)
07-26 06:56:29.917   580   580 E AndroidRuntime:        at com.android.server.ethernet.EthernetConfigStore.read(EthernetConfigStore.java:104)
07-26 06:56:29.917   580   580 E AndroidRuntime:        at com.android.server.ethernet.EthernetConfigStore.read(EthernetConfigStore.java:87)
07-26 06:56:29.917   580   580 E AndroidRuntime:        at com.android.server.ethernet.EthernetTracker.start(EthernetTracker.java:196)
07-26 06:56:29.917   580   580 E AndroidRuntime:        at com.android.server.ethernet.EthernetServiceImpl.start(EthernetServiceImpl.java:85)
07-26 06:56:29.917   580   580 E AndroidRuntime:        at com.android.server.ConnectivityServiceInitializer.onBootPhase(ConnectivityServiceInitializer.java:97)
07-26 06:56:29.917   580   580 E AndroidRuntime:        at com.android.server.SystemServiceManager.startBootPhase(SystemServiceManager.java:294)
07-26 06:56:29.917   580   580 E AndroidRuntime:        ... 6 more
07-26 06:56:29.917   623   642 V APM::AudioPolicyEngine: getDevicesForStrategyInt no device found for strategy 1

查看代码位置:

private void loadConfigFileLocked(final String filepath) {final ArrayMap<String, IpConfiguration> configs =IpConfigStore.readIpConfigurations(filepath);mIpConfigurations.putAll(configs);}

原来是这里直接读取文件,读到的信息是空的没有判断就放进ArrayMap  看log报错是int android.util.ArrayMap.mSize空指针,就是说获取的这个configs为null 

/** Returns a map of network identity token and {@link IpConfiguration}. */public static ArrayMap<String, IpConfiguration> readIpConfigurations(InputStream inputStream) {ArrayMap<String, IpConfiguration> networks = new ArrayMap<>();DataInputStream in = null;try {in = new DataInputStream(inputStream);int version = in.readInt();if (version != 3 && version != 2 && version != 1) {loge("Bad version on IP configuration file, ignore read");return null;}

就是这里文件内容是空的,就直接return null 了

loadConfigFileLocked方法里面拿到数据configs也没有判断是否为空,就直接putAll传进去了,这就导致遍历map时候空指针了。

我发现就算解决了这个空指针的问题,不会出现开机报错卡在动画,依然解决不了问题,数据还是会丢失,静态IP还是无法保存,客户依然会喷人,这可怎么办,自己写一个保存获取静态IP的逻辑吗?

我仔细分析了一下,这问题不是单纯的保存获取数据的问题了,系统代码这个写文件读文件的操作没什么大毛病,自己写一个逻辑依然是文件读写,这个可能涉及到系统文件读写的问题,可能是软件也可能是硬件问题,需要进一步排查分析原因。。。

http://www.yayakq.cn/news/212840/

相关文章:

  • 做网站需要交管理费吗商贸城网站建设方案
  • 南联网站建设公司wordpress评论要审核吗
  • 有哪些可以做问卷的网站高端网站设计平台高端网站设计企业
  • php网站开发需求分析一个网站如何做双语
  • 公司外包做网站赚钱吗官方网站建设投标书
  • 网站seo关键词排名优化如何在网上创建公司
  • 如何运用网站模板采集图片wordpress插件
  • 合肥制作网站哪家好网站空间一般多大
  • 简述电子商务网站开发的基本流程莱芜最新新闻
  • 网站后台显示不全零代码开发平台
  • 有没有做网页的兼职网站联通企业专线做网站
  • 东莞哪些网络公司做网站比较好建网站要什么工做人员
  • 福鼎网站建设wordpress 主题 小众
  • 商城网站模板库自己做同城购物网站
  • 延庆精神文明建设的门户网站网站建设策划案怎么写
  • 高端大气网站网站在别人那里已经建好了_公司里要进行修改_怎么做
  • 什么是网站建设方案网站建设合同不给版权
  • 深圳做企业网站多少钱大学生创业网站建设方案
  • 成都微信网站建设南京网站开发南京乐识强
  • 技术支持 淄博网站建设wordpress博客缩略图
  • 网站建设连接到百度外贸网站建设seo优化
  • 射洪做网站西安企业网站设计哪家专业
  • php网站是什么一个网站价格
  • 织梦自动生成手机网站建设游戏运营网站开展工作内容
  • p2p网贷网站开发网站服务器速度对seo有什么影响?
  • 河南网站网站制作.net如何建设网站
  • 建网站要多少钱维护便宜网站建设多少钱
  • 网站推广服务包括哪些厦门企业官方网站建设
  • 素材搜集网站网站建设背景介绍怎么写
  • 国家建设部网站平台网站 做购物车