<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ngRoom]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wallage_yeye</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wallage_yeye]]></copyright><item><title><![CDATA[Watchdog 杀掉系统进程重启问题分析]]></title><link>https://blog.youkuaiyun.com/wallage_yeye/article/details/125064560</link><guid>https://blog.youkuaiyun.com/wallage_yeye/article/details/125064560</guid><author>wallage_yeye</author><pubDate>Tue, 31 May 2022 16:01:52 +0800</pubDate><description><![CDATA[问题背景：

设备采用全志T3芯片，Android4.4系统。

在对相册等APP进行压测时，通过录像发现设备在21:55左右重启了。

问题分析：

我们抓取了logcat日志，内核日志，trace日志以及tomstorm日志。

logcat日志中我们发现是watchdog杀掉了系统进程导致系统重启的。


05-30 21:54:58.776 W/Watchdog( 2190): *** WATCHDOG KILLING SYSTEM PROCESS: Blocked in monitor com.a]]></description><category></category></item><item><title><![CDATA[Np问题引起FATAL EXCEPTION导致系统重启]]></title><link>https://blog.youkuaiyun.com/wallage_yeye/article/details/125015655</link><guid>https://blog.youkuaiyun.com/wallage_yeye/article/details/125015655</guid><author>wallage_yeye</author><pubDate>Sat, 28 May 2022 11:00:19 +0800</pubDate><description><![CDATA[经过我们测试工程师反复压力测试，挂机测试结果显示出现一次系统重启，抓取日志分析。

首先分析trace日志




----- pid 2186 at 2022-05-26 02:17:39 -----
Cmd line: system_server

JNI: CheckJNI is off; workarounds are off; pins=3; globals=1508 (plus 39 weak)

DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=]]></description><category></category></item><item><title><![CDATA[PYQT5 多窗口切换问题]]></title><link>https://blog.youkuaiyun.com/wallage_yeye/article/details/124960267</link><guid>https://blog.youkuaiyun.com/wallage_yeye/article/details/124960267</guid><author>wallage_yeye</author><pubDate>Wed, 25 May 2022 09:57:18 +0800</pubDate><description><![CDATA[一个问题一直困扰着我，启动一个loading窗口后，等待加载完，再显示主窗口，由于窗口做了多语言控制，结果只要先加载loading窗口再显示主窗口，多语言就必然失效。

之前的做法是在loading的子进程里等待加载完后再显示主窗口，老出问题，现在改成如下方式：


if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setWindowIcon(QIcon('../favicon.ico'))

    loading_wi]]></description><category></category></item><item><title><![CDATA[ANR问题分析记录]]></title><link>https://blog.youkuaiyun.com/wallage_yeye/article/details/124941389</link><guid>https://blog.youkuaiyun.com/wallage_yeye/article/details/124941389</guid><author>wallage_yeye</author><pubDate>Tue, 24 May 2022 10:16:03 +0800</pubDate><description><![CDATA[说明：设备的安卓版本是4.4的，比较老，芯片用的是全志T3，设置APP为自研开发

测试过程，通过自动化对设置APP进行压力测试，出现ANR

Anr日志如下：


----- pid 2191 at 2022-05-23 21:35:07 -----
Cmd line: system_server

JNI: CheckJNI is off; workarounds are off; pins=3; globals=1207 (plus 27 weak)

DALVIK THREADS:
(mutexes]]></description><category></category></item><item><title><![CDATA[pyqt5 多语言开发]]></title><link>https://blog.youkuaiyun.com/wallage_yeye/article/details/124929487</link><guid>https://blog.youkuaiyun.com/wallage_yeye/article/details/124929487</guid><author>wallage_yeye</author><pubDate>Mon, 23 May 2022 17:08:03 +0800</pubDate><description><![CDATA[请尚未配置pycharm工具的阅读下面文章

PyQt5 安装以及与Pycharm结合使用_wallage_wang的博客-优快云博客

1.界面转换

通过QT设计师完成界面设计后，将UI转成py文件后，我们能看到工具自动给我们生成了如下代码：



程序中需要翻译的内容，工具已经自动帮我们指定了 ：


_translate("MainWindow", "&amp;File")

2.转成翻译文件

已配置好工具的同学可以如下操作，将main.py 转成翻译文件main.ts



未配置好工具也可执]]></description><category></category></item><item><title><![CDATA[PyQt5 安装以及与Pycharm结合使用]]></title><link>https://blog.youkuaiyun.com/wallage_yeye/article/details/124928124</link><guid>https://blog.youkuaiyun.com/wallage_yeye/article/details/124928124</guid><author>wallage_yeye</author><pubDate>Mon, 23 May 2022 16:10:33 +0800</pubDate><description><![CDATA[1.安装：


pip install pyqt5      # 安装pyqt5库
pip install pyqt5-tools     # 安装qt designer


如果国内下载慢，可以使用国内的服务器


pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyqt5
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyqt5-tools

2.与Pycharm结合

2.]]></description><category></category></item><item><title><![CDATA[Android7 so库加载流程梳理]]></title><link>https://blog.youkuaiyun.com/wallage_yeye/article/details/124733807</link><guid>https://blog.youkuaiyun.com/wallage_yeye/article/details/124733807</guid><author>wallage_yeye</author><pubDate>Thu, 12 May 2022 18:27:46 +0800</pubDate><description><![CDATA[Java层通过System.load或System.loadLibrary来加载一个so文件，它的定义在Android源码中的路径为libcore/ojluni/src/main/java/java/lang/System.java，执行流程如下：



接下来，让我们具体看下System.loadLibrary这个方法的实现。



    /**
     * Loads the system library specified by the &lt;code&gt;libname&lt;/code&g]]></description><category></category></item><item><title><![CDATA[android系统cpu/内存信息提取设计]]></title><link>https://blog.youkuaiyun.com/wallage_yeye/article/details/124728001</link><guid>https://blog.youkuaiyun.com/wallage_yeye/article/details/124728001</guid><author>wallage_yeye</author><pubDate>Thu, 12 May 2022 11:52:44 +0800</pubDate><description><![CDATA[主要设计思想

将安卓设备通过shell脚本，输入指定进程，将cpu/内存信息提取到文件里，方便通过python或其他工具制作成曲线图。

前提

设备有执行top procrank busybox等指令的权限，最好就是root化的

脚本输入设计

参数1：指定多个进程名，用逗号分开

参数2：记录输出文件，设备中的可写路径

参数3：数据采集间隔时间，这个时间不是精确的时间，毕竟执行procrank 等命令也会消耗时间的。


#!/system/bin/sh

if [ $# -eq 0 ];then]]></description><category></category></item><item><title><![CDATA[导致设备卡顿黑屏重启的各种场景以及问题解决过程集锦]]></title><link>https://blog.youkuaiyun.com/wallage_yeye/article/details/124717037</link><guid>https://blog.youkuaiyun.com/wallage_yeye/article/details/124717037</guid><author>wallage_yeye</author><pubDate>Wed, 11 May 2022 21:04:32 +0800</pubDate><description><![CDATA[1、问题背景

我们公司使用的是全志T7芯片，Android7.1的系统，做的是车载导航，在21年10月份开始，产品陆陆续续报了各种稀奇古怪的问题，大部分问题主要集中在黑屏、卡顿、死机、重启等。

2、问题与解决方案介绍

2.1 设备卡顿问题

客户反馈，设备在使用过程中，时间一长出现各种场景卡顿（反馈的次数太多了，有些是开发人员犯的低级错误）。卡顿问题后面会调几个特殊案例说说，就不一一分析问题根因了，下面主要讲解解决过程。

2.1.1 版本模式导致的性能问题

由于公司小，有些标准规范心里清楚，但是实]]></description><category></category></item><item><title><![CDATA[IO异常导致启动APP黑屏卡死问题分析记录]]></title><link>https://blog.youkuaiyun.com/wallage_yeye/article/details/124713999</link><guid>https://blog.youkuaiyun.com/wallage_yeye/article/details/124713999</guid><author>wallage_yeye</author><pubDate>Wed, 11 May 2022 19:07:12 +0800</pubDate><description><![CDATA[设备现象：

设备使用的是全志T7芯片平台，Android7.1

启动播放咪咕视频时，出现黑屏卡死



问题原因分析：


05-07 14:22:22.484  2066  2066 I Zygote  : mdk app  in root group
05-07 14:22:22.508  2665  4145 I ActivityManager: app.processName = cn.cmvideo.car.play
05-07 14:22:22.508  2665  4145 I Activ]]></description><category></category></item><item><title><![CDATA[Android7.0 Vold 进程]]></title><link>https://blog.youkuaiyun.com/wallage_yeye/article/details/124706961</link><guid>https://blog.youkuaiyun.com/wallage_yeye/article/details/124706961</guid><author>wallage_yeye</author><pubDate>Wed, 11 May 2022 16:11:30 +0800</pubDate><description><![CDATA[一、Vold简介

Vold是VolumeDaemon的缩写,负责管理和控制Android平台外部存储设备，包括SD插拨、挂载、卸载、格式化等。它是通过init进程解析init.rc脚本所启动的进程.它处于Native层.

Vold的整个控制模块主要由三个类模块构成：NetlinkManager、VolumeManager和CommandListener，它们的功能划分大概是：

NetlinkManager：用于从kernel中获取SD卡插拔的Uevnet消息
	VolumeManager：管理模块，.]]></description><category></category></item><item><title><![CDATA[【Netlink】学习笔记与实践]]></title><link>https://blog.youkuaiyun.com/wallage_yeye/article/details/124691346</link><guid>https://blog.youkuaiyun.com/wallage_yeye/article/details/124691346</guid><author>wallage_yeye</author><pubDate>Tue, 10 May 2022 19:55:08 +0800</pubDate><description><![CDATA[什么是Netlink

关于Netlink的理解，需要把握几个关键点：

1、面向数据报的无连接消息子系统

2、基于通用的BSD Socket架构而实现

关于第一点使我们很容易联想到UDP协议，能想到这一点就非常棒了。按着UDP协议来理解Netlink不是不无道理，只要你能触类旁通，做到“活学”，善于总结归纳、联想，最后实现知识迁移这就是学习的本质。Netlink可以实现内核-&gt;用户以及用户-&gt;内核的双向、异步的数据通信，同时它还支持两个用户进程之间、甚至两个内核子系统之间的数据通信。本文中]]></description><category></category></item><item><title><![CDATA[android4.4 添加以太网ethernet方法]]></title><link>https://blog.youkuaiyun.com/wallage_yeye/article/details/89556261</link><guid>https://blog.youkuaiyun.com/wallage_yeye/article/details/89556261</guid><author>wallage_yeye</author><pubDate>Fri, 26 Apr 2019 16:35:27 +0800</pubDate><description><![CDATA[增加ethernet主要是三部分：１、ethernet service; 2、ethernet Settings3、Systemui ethernet通知

以下提到的源文件将会在文章最后提供下载地址

拷贝frameworks/base/ethernet到frameworks/base下

修改frameworks/base/Android.mk

在
wifi/java/andro...]]></description><category></category></item><item><title><![CDATA[Android 7.1 系统启动流程]]></title><link>https://blog.youkuaiyun.com/wallage_yeye/article/details/88574269</link><guid>https://blog.youkuaiyun.com/wallage_yeye/article/details/88574269</guid><author>wallage_yeye</author><pubDate>Fri, 15 Mar 2019 14:45:52 +0800</pubDate><description><![CDATA[源码：

system/core/rootdir/

init.rc
	init.zygote64.rc
system/core/init/

init.cpp
	init_parser.cpp
	signal_handler.cpp
frameworks/base/cmds/app_process/

App_main.cpp
frameworks/base/core/jni/

Android...]]></description><category></category></item><item><title><![CDATA[七夕手势识别小程序，献给爱人]]></title><link>https://blog.youkuaiyun.com/wallage_yeye/article/details/77651082</link><guid>https://blog.youkuaiyun.com/wallage_yeye/article/details/77651082</guid><author>wallage_yeye</author><pubDate>Mon, 28 Aug 2017 17:15:25 +0800</pubDate><description><![CDATA[七夕节，写了个手势识别的小程序给爱人，手指移动时显示设置的图片，
手掌移动时，关闭图片显示，时间太短，就这么简单吧
下载地址：
http://pan.baidu.com/s/1bphIGl5



若系统从未安装过vc，请先安装vc的运行环境，下载vcredist安装：
http://pan.baidu.com/s/1sl2ULrv]]></description><category></category></item><item><title><![CDATA[自制疲劳检查摄像头]]></title><link>https://blog.youkuaiyun.com/wallage_yeye/article/details/77528294</link><guid>https://blog.youkuaiyun.com/wallage_yeye/article/details/77528294</guid><author>wallage_yeye</author><pubDate>Thu, 24 Aug 2017 11:44:36 +0800</pubDate><description><![CDATA[本人菜鸟一枚，接触opencv没多久，以前 做过图像处理相关的项目。
说到疲劳检查，自己开车的时候深有体会，开久了，就怕一不小心开到沟里去。
来说正题吧，疲劳检查。
我的基本思路就是车上司机位安装一个摄像头，拍摄司机，检查眼睛是否正视前方，其实说白了也算不上疲劳检查，主要就是检查司机有没有正式前方，如果司机闭上眼睛、低头看手机或者看车左右方，时间超过x秒，则提示司机注意前方。
我觉得这样也]]></description><category></category></item><item><title><![CDATA[新博客踏青]]></title><link>https://blog.youkuaiyun.com/wallage_yeye/article/details/77494420</link><guid>https://blog.youkuaiyun.com/wallage_yeye/article/details/77494420</guid><author>wallage_yeye</author><pubDate>Wed, 23 Aug 2017 09:02:20 +0800</pubDate><description><![CDATA[测试测试
//拷贝文件：
bool HaarTrainer::copyFileToPath(QString sourceFile ,QString toFile, bool coverFileIfExist)
{
    toFile.replace("\\","/");
    if (sourceFile == toFile){
        return true;
    }
    ]]></description><category></category></item></channel></rss>