2月 2016

OpenWRT下libv4l的编译问题(uClibc++、stdc++相关)

最近研究路由器上的摄像头监控,要用到libv4l2的库,结果用OpenWRT SDK编译时却遇到了问题,路由器cpu是MT7620A,用的SDK是OpenWrt-SDK-ramips-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2,用./scripts/feeds安装了libv4l后,直接make报错:

In file included from v4l2-compliance.cpp:37:0:
v4l2-compliance.h:25:18: fatal error: cerrno: No such file or directory
 #include <cerrno>

看了下,是c++写法下的errno头文件找不到,V=s看了详细日志,-I的头文件搜索路径里确实没有cerrno,但是这个文件确实存在于这里:staging_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/usr/include/uClibc++/,也就是说-I少了个带uClibc++的路径,看了半天sdk里的各种.mk,也没找到什么配置参数方面的玄机,可又不想傻加上个-I,或者都改成errno.h,于是开始搜索…
Continue reading…

Android应用图标修改后真机显示不更新的问题及mipmap图标

问题大致就如标题描述的那样,应用图标修改后重新打包安装到设备上时并没有变化,当然,前提是已经排除了人为因素导致的res内图标文件替错等原因。许久以前,在Android的原始时期,1.6、2.2时代时,就曾经在HTC的Sense UI上遇到过类似问题,当时也没太在意,现在在OnePlus One上(CM12s系统)又遇到了同样的问题,决定彻查一下原因。
百度下发现MIUI等也有类似的问题,基本确定是Launcher对应用图标建立了缓存,最直接的破除缓存的方法就是修改应用的Package Name,换包名后重装图标就会显示正确,明显就是没有缓存的特征!然而,应用发布过后一般是不会更换包名的,所以这个方法实际应用意义不大,仅仅是确认了这个图标缓存的机制。
这之后又查到了一些解决方法,如删除 /data/system/customized_icons 路径下的响应图标(这个需要root,且在5.0上没有这个路径,估计是Pre Lollipop用的),再如杀掉Launcher的进程,强制其重启刷新缓存(这个貌似不科学,因为重启Launcher的话应该和重启系统性质是一样的,但是我试过重启机器后图标依然没有刷新,再有就是CM上也没找到明显的Launcher进程,只有个systemui看起来比较像,不过也不敢强制结束,怕玩坏啊,哈哈!),这之后又自己尝试了下别的可能作为缓存key的要素,如改VersionCode,改VersionName,同时改VersionCode和VersionName,改res下的图标文件名等,均无效!
Continue reading…