<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Evan_Lo的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Evan_Lo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Evan_Lo]]></copyright><item><title><![CDATA[adb 截屏和录制]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/81203100</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/81203100</guid><author>Evan_Lo</author><pubDate>Wed, 25 Jul 2018 15:03:06 +0800</pubDate><description><![CDATA[截屏

用法: screencap [-hp] [-d display-id] [FILENAME] 
   -h: 帮助信息。 
   -p: 保存为png文件。 
   -d: 声明一个显示ID给捕获器， 默认是0。 
如果文件名是.png 后缀的， 将会保存为一个png文件。 
如果没有输入文件名，就会直接输出到stdout里面。   



录制



用法: screenrecord [...]]></description><category></category></item><item><title><![CDATA[synchronized 和 beginTransaction 死锁的一个例子]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/80392705</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/80392705</guid><author>Evan_Lo</author><pubDate>Mon, 21 May 2018 15:19:52 +0800</pubDate><description><![CDATA[
                    
            


这是一个及其诡异的死锁，很少有人意识到，在Androind中，SQLiteDatabase.beginTransaction的实现里，也要等到SQLiteConnectionPool中此db的primaryConnect可用才行。也就是说，beginTransaction和endTransaction也在某种程序上等同于锁定...]]></description><category></category></item><item><title><![CDATA[Ubuntu pycharm配置 Qt Designer]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/79670518</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/79670518</guid><author>Evan_Lo</author><pubDate>Fri, 23 Mar 2018 17:29:42 +0800</pubDate><description><![CDATA[安装qt tools



sudo apt install qttools5-dev-tools



配置pycharm

配置qt designer

File -&amp;gt; Settings -&amp;gt; Tools -&amp;gt; External Tools 


其中Program路径位本机designer的路径，根据实际情况修改

/usr/lib/x86_64-linux-gnu/qt5...]]></description><category></category></item><item><title><![CDATA[Ubuntu17.04安装Samba文件共享]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/79337921</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/79337921</guid><author>Evan_Lo</author><pubDate>Mon, 19 Feb 2018 20:13:08 +0800</pubDate><description><![CDATA[
                            

1 安装




[plain]&amp;nbsp;view
 plain&amp;nbsp;copy



 
 
 
sudo&amp;nbsp;apt-get&amp;nbsp;install&amp;nbsp;samba&amp;nbsp;&amp;nbsp; 
2 配置



&amp;nbsp;&amp;nbsp;&amp;nbsp; 打开Samba配置文件:






[plain]&amp;nbsp;vi...]]></description><category></category></item><item><title><![CDATA[Jenkins job 之间实现带参数触发]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/79094426</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/79094426</guid><author>Evan_Lo</author><pubDate>Thu, 18 Jan 2018 11:55:48 +0800</pubDate><description><![CDATA[1 背景

开发打包的 jenkins job A 是在 local 的一台 windows 上，同时在这台 local 的 windows 上还有一 另一个 jenkins job B 是用来上传 job A 生成的包（build）到测试平台的仓库（比如 saucelabs storage）。然而 我们测试的 jenkins job C 是在 azure 上的一台 windows server]]></description><category></category></item><item><title><![CDATA[LOCAL_EXPORT_C_INCLUDES]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/79035798</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/79035798</guid><author>Evan_Lo</author><pubDate>Thu, 11 Jan 2018 16:34:08 +0800</pubDate><description><![CDATA[LOCAL_EXPORT_C_INCLUDES和LOCALC_INCLUDES 、LOCAL_EXPORT_CFLAGS和 LOCAL_CFLAGS ，差别是编译某模块是，如果它依赖别的模块，那么别的模块的LOCAL_EXPORT*类的值，会自动加入到本模块。（但是反过来不会有作用）

例如，定义了一个模块， 定义宏FOO

   include $(CLEAR_VARS)
   LOCAL_MO]]></description><category></category></item><item><title><![CDATA[Android Binder机制（超级详尽）]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/78916042</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/78916042</guid><author>Evan_Lo</author><pubDate>Wed, 27 Dec 2017 20:24:25 +0800</pubDate><description><![CDATA[1．binder通信概述
    binder通信是一种client-server的通信结构，
    1.从表面上来看，是client通过获得一个server的代理接口，对server进行直接调用；
    2.实际上，代理接口中定义的方法与server中定义的方法是一一对应的；
    3.client调用某个代理接口中的方法时，代理接口的方法会将client传递的参数打包成为Parcel对象；]]></description><category></category></item><item><title><![CDATA[图解Binder——类图和时序图]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/78912231</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/78912231</guid><author>Evan_Lo</author><pubDate>Wed, 27 Dec 2017 14:52:23 +0800</pubDate><description><![CDATA[图解Binder——类图和时序图]]></description><category></category></item><item><title><![CDATA[ssh-server服务在修改了端口的情况下，怎么git clone 代码]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/78902928</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/78902928</guid><author>Evan_Lo</author><pubDate>Tue, 26 Dec 2017 15:40:59 +0800</pubDate><description><![CDATA[今天在用git clone下载代码里，说端口拒绝访问，问了一下管理服务器的同事，才知道ssh服务器的端口已经改成了8120，不想使用https方式下载，怎么办?其实很简单，原来的clone命令是这样的：git clone git@XXX.com:username/resources.git只需要把这个命令改成：git clone ssh://git@XXX.com:8120/username/res]]></description><category></category></item><item><title><![CDATA[Android-7.0-Nuplayer概述]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/78898777</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/78898777</guid><author>Evan_Lo</author><pubDate>Tue, 26 Dec 2017 09:25:13 +0800</pubDate><description><![CDATA[转载自http://blog.youkuaiyun.com/miaomiao12345678/article/details/57415505 
                             
                        Nuplayer简介Android2.3时引入流媒体框架，而流媒体框架的核心是NuPlayer。Android4.0之后HttpLive和RTSP协议开始使用N]]></description><category></category></item><item><title><![CDATA[svn 设置文件可执行权限]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/78898718</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/78898718</guid><author>Evan_Lo</author><pubDate>Tue, 26 Dec 2017 09:17:47 +0800</pubDate><description><![CDATA[本地文件在commit到仓库之前若没有chmod +x 权限的话，那在svn仓库里的文件将会保持当前无可执行属性状态。即使在本地chmod +x filename 之后，再提交到仓库也是没有用的。check out到其他目录的时候，文件仍然没有可执行权限。需要使用svn 设置文件属性，如下linux：svn propset svn:executable on *svn commit -m “” Hi]]></description><category></category></item><item><title><![CDATA[windows 10 adb 使用]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/78655004</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/78655004</guid><author>Evan_Lo</author><pubDate>Tue, 28 Nov 2017 14:45:13 +0800</pubDate><description><![CDATA[windows adb 使用]]></description><category></category></item><item><title><![CDATA[内核崩溃重启查找流程]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/78604694</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/78604694</guid><author>Evan_Lo</author><pubDate>Wed, 22 Nov 2017 16:05:26 +0800</pubDate><description><![CDATA[RT]]></description><category></category></item><item><title><![CDATA[tensorflow 初玩]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/78125724</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/78125724</guid><author>Evan_Lo</author><pubDate>Thu, 28 Sep 2017 17:02:06 +0800</pubDate><description><![CDATA[tensorflow]]></description><category></category></item><item><title><![CDATA[linux启动init过程分析]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/77746709</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/77746709</guid><author>Evan_Lo</author><pubDate>Thu, 31 Aug 2017 16:15:29 +0800</pubDate><description><![CDATA[init 进程号称天字一号进程，做系统的小伙伴应该都有了解。那么，这个一号进程是如何被启动的呢？ 今天就来一起简单看看这个进程的前世今生。
因为目前运行Linux最多的就是ARM设备了，我们就基于Linux的master分支简单分析下ARM 32架构下的启动过程。
kernel的执行起点是stext函数，定义于arch/arm/kernel/head.S。我们就从这个函数开始看看init如何被启动的]]></description><category></category></item><item><title><![CDATA[android init 进程详解（基于AOSP master分支）]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/74922848</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/74922848</guid><author>Evan_Lo</author><pubDate>Mon, 10 Jul 2017 14:40:28 +0800</pubDate><description><![CDATA[android init]]></description><category></category></item><item><title><![CDATA[android 6.0 系统第一次启动launcher 启动慢问题分析]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/65630515</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/65630515</guid><author>Evan_Lo</author><pubDate>Fri, 24 Mar 2017 14:30:13 +0800</pubDate><description><![CDATA[机器第一次开机 开机动画完了之后很久桌面才显示出来问题测试分析


        两款使用6.0开发板测试结果:
        1.A第一次启动, 动画到launcher 显示时间分别为16S.
        2. B第一次启动,
 动画到launcher 显示时间分别为11S.


        原因分析:
        6.0 采用的是ART虚拟机  , 由于在A]]></description><category></category></item><item><title><![CDATA[android 非系统APP访问字符设备]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/62423780</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/62423780</guid><author>Evan_Lo</author><pubDate>Thu, 16 Mar 2017 15:20:06 +0800</pubDate><description><![CDATA[在默认的selinux规则中, 非系统APP无权访问很多类型的字符设备.        


以访问串行设备为例,  修改android/external/sepolicy/device.te。




diff --git a/device.te b/device.te
--- a/device.te
+++ b/device.te
@@ -33,7 +33,7 @@ ty]]></description><category></category></item><item><title><![CDATA[普通应用控制待机]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/54669265</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/54669265</guid><author>Evan_Lo</author><pubDate>Sun, 22 Jan 2017 16:39:45 +0800</pubDate><description><![CDATA[待机接口为PowerManager.goToSleep ， 不过普通APK没有权限调用。




1. APP作为系统应用编译，apk的AndroidManifest.xml中添加
  android:sharedUserId="android.uid.system"， 并放到源码中android/packages/apps/目录下编译。


2. 如果没有APK源码， 在APK]]></description><category></category></item><item><title><![CDATA[系统默认联网更新时间]]></title><link>https://blog.youkuaiyun.com/Evan_Lo/article/details/54669357</link><guid>https://blog.youkuaiyun.com/Evan_Lo/article/details/54669357</guid><author>Evan_Lo</author><pubDate>Sun, 22 Jan 2017 16:37:19 +0800</pubDate><description><![CDATA[系统默认在联网后每隔一分钟尝试获取网络时间一次，总共尝试三次， 如果还是失败，则会在10天后再发起时间获取。
如果需要修改默认配置，参考以下文件及项目。
config_ntpPollingIntervalShorter 为重试时间
config_ntpRetry 为重试次数
frameworks/base/core/res/res/values/config.xml]]></description><category></category></item></channel></rss>