<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sunnytina的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sunnytina</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sunnytina]]></copyright><item><title><![CDATA[Android monkey测试脚本]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/78891984</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/78891984</guid><author>sunnytina</author><pubDate>Mon, 25 Dec 2017 13:56:49 +0800</pubDate><description><![CDATA[@echo off
set /p times=测试开关机次数
set n=0
:starttest
set /a temp+=1
echo 执行第%temp%次
adb reboot
adb wait-for-devices
ping -n 40 127.1>nul
set /a n+=1
if %n%==%times%(echo 测试结束) else(goto restart]]></description><category></category></item><item><title><![CDATA[surfaceflinger composer flow && mutex introduction]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/52485386</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/52485386</guid><author>sunnytina</author><pubDate>Fri, 09 Sep 2016 11:22:31 +0800</pubDate><description><![CDATA[1.1.1 Android中的同步与互斥
Android系统也提供了自己的同步互斥机制，不过任何技术的本质都是类似的，更多的是把这些本质的东西应用到符合自己要求的场景。目前Android封装的同步互斥类包括：


·          Mutex


头文件在frameworks/native/include/utils/Mutex.h，因为实现与具体的平台有关，我们只关心如何使用它]]></description><category></category></item><item><title><![CDATA[lighthouse3d的GLSL教程]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/52387266</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/52387266</guid><author>sunnytina</author><pubDate>Wed, 31 Aug 2016 17:39:27 +0800</pubDate><description><![CDATA[请参考原作者翻译的文章
http://blog.youkuaiyun.com/racehorse/article/details/6593719


http://review.cyanogenmod.org/#/c/129313/]]></description><category></category></item><item><title><![CDATA[Android 4.4(KitKat)中的设计模式-Graphics子系统]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/52385831</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/52385831</guid><author>sunnytina</author><pubDate>Wed, 31 Aug 2016 15:47:56 +0800</pubDate><description><![CDATA[原文地址：http://blog.youkuaiyun.com/jinzhuojun/article/details/17427491

 

本文主要从设计模式角度简单地侃下Android4.4(KitKat)的Graphics子系统。作为一个操作系统，Android需要考虑到灵活性，兼容性，可用性，可维护性等方方面面 ，为了达到这些需求，它需要良好的设计。因此，在Android源码中可以看到很多设]]></description><category></category></item><item><title><![CDATA[Android中native_handle private_handle_t ANativeWindowBuffer ANativeWindow GraphicBuffer Surface的关系]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/52370837</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/52370837</guid><author>sunnytina</author><pubDate>Tue, 30 Aug 2016 16:53:48 +0800</pubDate><description><![CDATA[在阅读SurfaceFlinger HardwareComposer以及gralloc相关代码的过程中,我们经常会遇到native_handle private_handle_t ANativeWindowBuffer ANativeWindow GraphicBuffer Surface等等一系列和memory相关的struct和class,他们相互之间到底是什么区别,又有什么联系呢?本文从st]]></description><category></category></item><item><title><![CDATA[Android用surface直接显示yuv数据（二）]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/52354643</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/52354643</guid><author>sunnytina</author><pubDate>Mon, 29 Aug 2016 17:01:07 +0800</pubDate><description><![CDATA[研究了一段时间Android的surface系统，一直执着地认为所有在surface或者屏幕上显示的画面，必须要转换成RGB才能显示，yuv数据也要通过颜色空间转换成RGB才能显示。可最近在研究stagefright视频显示时发现，根本找不到omx解码后的yuv是怎么转换成RGB的代码，yuv数据在render之后就找不到去向了，可画面确确实实的显示出来了，这从此颠覆了yuv必须要转换成RGB才能]]></description><category></category></item><item><title><![CDATA[分析linux下的进程地址空间，以及c语言的函数调用过程]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/52327813</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/52327813</guid><author>sunnytina</author><pubDate>Fri, 26 Aug 2016 14:04:15 +0800</pubDate><description><![CDATA[今天的计划是在linux环境下，通过一个简单的程序，先了解一个进程的各个部分在内存中的分布，然后着重学习栈的概念。熟悉之后，和C相关的各种困惑就可以解决一大半。

程序如下：

/*
 * file name: for_rabbit.c
 */

#include 
#include

int extern_apple;
int extern_pear = 1;

in]]></description><category></category></item><item><title><![CDATA[Android下打印调试堆栈方法总结以及strace工具使用]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/52302793</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/52302793</guid><author>sunnytina</author><pubDate>Wed, 24 Aug 2016 17:53:46 +0800</pubDate><description><![CDATA[打印堆栈是调试的常用方法，一般在系统异常时，我们可以将异常情况下的堆栈打印出来，这样十分方便错误查找。实际上还有另外一个非常有用的功能：分析代码的行为。android代码太过庞大复杂了，完全的静态分析经常是无从下手，因此通过打印堆栈的动态分析也十分必要。




Android打印堆栈的方法，简单归类一下 

1. zygote的堆栈dump

实际上这个可以同时dump jav]]></description><category></category></item><item><title><![CDATA[对进程地址空间的一点认识]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/52300373</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/52300373</guid><author>sunnytina</author><pubDate>Wed, 24 Aug 2016 14:43:36 +0800</pubDate><description><![CDATA[在进入正题前先来谈谈操作系统内存管理机制的发展历程，了解这些有利于我们更好的理解目前操作系统的内存管理机制。
一 早期的内存分配机制
在早期的计算机中，要运行一个程序，会把这些程序全都装入内存，程序都是直接运行在内存上的，也就是说程序中访问的内存地址都是实际的物理内存地址。当计算机同时运行多个程序时，必须保证这些程序用到的内存总量要小于计算机实际物理内存的大小。那当程序同时运行多个程序时，操作]]></description><category></category></item><item><title><![CDATA[VAO与VBO]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/52180376</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/52180376</guid><author>sunnytina</author><pubDate>Thu, 11 Aug 2016 10:37:30 +0800</pubDate><description><![CDATA[我想大家都已经熟悉VBO了吧。在GL3.0时代的VBO大体还是处于最重要的地位，但是与此同时也出现了不少新的用法和辅助役，其中一个就是VAO。本文大致小记一下这两者的联系，帮助大家理解一下这个角色。——ZwqXin.com

VBO？See[学一学，VBO]

本文来源于 ZwqXin (http://www.zwqxin.com/),
 转载请注明
      原文地址：http:/]]></description><category></category></item><item><title><![CDATA[Android createWindowSurface failed EGL_BAD_ALLOC 引起Crash的解决方案]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/52127532</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/52127532</guid><author>sunnytina</author><pubDate>Fri, 05 Aug 2016 11:34:45 +0800</pubDate><description><![CDATA[createWindowSurface failed EGL_BAD_ALLOC

先看下Log：





[java] view
 plain copy






W/Adreno-EGL﹕ 5493>: EGL_BAD_ALLOC  
E/libEGL﹕ eglMakeCurrent:784 error 3003 (EGL_BAD_ALLOC)  
I/]]></description><category></category></item><item><title><![CDATA[EGLImage与纹理]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/51895406</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/51895406</guid><author>sunnytina</author><pubDate>Wed, 13 Jul 2016 10:19:42 +0800</pubDate><description><![CDATA[Using the EGL* Image Extension

The conventional way to copy an image into a texture is with either the glTexImage2D() orglTexSubImage2D() methods,
 but these methods are slow because of how they c]]></description><category></category></item><item><title><![CDATA[Android中线程同步之Mutex与Condtion的用法]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/51848601</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/51848601</guid><author>sunnytina</author><pubDate>Thu, 07 Jul 2016 09:36:25 +0800</pubDate><description><![CDATA[Android封装的同步类主要有MUTEX（AutoMutex）与Condition。本文分析如何使用他们，具体的实现参见《Android中线程同步之MUTEX与Condtion的实现》与《pthread之MUTEX与Condition用法》。
Keywords: Mutex, Condition Variable, AutoLock/AutoMutex, Android
关键字：互斥体、条件]]></description><category></category></item><item><title><![CDATA[Android bug——Launcher 0x506导致花屏问题]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/51790255</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/51790255</guid><author>sunnytina</author><pubDate>Thu, 30 Jun 2016 14:45:35 +0800</pubDate><description><![CDATA[现象描述：
在Android4.4中，概率极高会出现Launcher或者应用整个绘制成花屏、黑屏或者字体绘制成方块等问题，出现花屏问题的时候将会在hwui中打印0x506的错误。


分析：

通过log发现也只有hwui中出现0x506这个错误码，即hwui中当前绘图时使用的fbo是无效的。接着通过分析代码发现当前hwui中使用fbo的地方为LayerRenderer中，在Layer]]></description><category></category></item><item><title><![CDATA[理解GL_TRIANGLE_STRIP等绘制三角形序列的三种方式]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/51699930</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/51699930</guid><author>sunnytina</author><pubDate>Fri, 17 Jun 2016 14:54:53 +0800</pubDate><description><![CDATA[GL_TRIANGLE_STRIP绘制三角形方式很多时候令人疑惑，在这里对其运作机理进行解释。

一般情况下有三种绘制一系列三角形的方式，分别是GL_TRIANGLES、GL_TRIANGLE_STRIP和GL_TRIANGLE_FAN。

如下图所示：




GL_TRIANGLES是以每三个顶点绘制一个三角形。第一个三角形使用顶点v0,v1,v2,第二个使用v3,v4,v5]]></description><category></category></item><item><title><![CDATA[map server]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/51378451</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/51378451</guid><author>sunnytina</author><pubDate>Wed, 11 May 2016 21:26:16 +0800</pubDate><description><![CDATA[sshfs  username@host_ip:/home6/username/ server/]]></description><category></category></item><item><title><![CDATA[EGLImage in SurfaceFlinger]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/51074032</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/51074032</guid><author>sunnytina</author><pubDate>Wed, 06 Apr 2016 13:21:59 +0800</pubDate><description><![CDATA[In android, the application UI is used as an OpenGL ES texture, and composed by SurfaceFlinger to form final image on display. To understand how the application UI is sent to OpenGL, we have to start ]]></description><category></category></item><item><title><![CDATA[DDMS调试native heap实战]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/50737294</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/50737294</guid><author>sunnytina</author><pubDate>Thu, 25 Feb 2016 14:14:51 +0800</pubDate><description><![CDATA[第一步：setprop libc.debug.malloc 1。这里有四种prop可以设置，1是mem leak，5和10是内存越界，20是虚拟机。可悲的是5和10并没有被libc_malloc_debug库完美地支持，所以只有1好用。



第二步，stop, start。这些操作都是在device shell里面做的。设备会快速重启。


第三步，验证prop。getprop看看]]></description><category></category></item><item><title><![CDATA[C与C++互相调用]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/50353327</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/50353327</guid><author>sunnytina</author><pubDate>Fri, 18 Dec 2015 18:02:30 +0800</pubDate><description><![CDATA[1.引言
　　C++语言的创建初衷是“a better C”，但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言，C++保留了一部分过程式语言的特点（被世人称为“不彻底地面向对象”），因而它可以定义不属于任何类的全局变量和函数。但是，C++毕竟是一种面向对象的程序设计语言，为了支持函数的重载，C++对全局函数的处理方式与C有明显的不]]></description><category></category></item><item><title><![CDATA[spin_lock and mutex_lock]]></title><link>https://blog.youkuaiyun.com/sunnytina/article/details/50311899</link><guid>https://blog.youkuaiyun.com/sunnytina/article/details/50311899</guid><author>sunnytina</author><pubDate>Tue, 15 Dec 2015 10:47:53 +0800</pubDate><description><![CDATA[本文由该问题引入到内核锁的讨论，归纳如下


为什么需要内核锁?
多核处理器下，会存在多个进程处于内核态的情况，而在内核态下，进程是可以访问所有内核数据的，因此要对共享数据进行保护，即互斥处理


有哪些内核锁机制?
(1)原子操作
atomic_t数据类型，atomic_inc(atomic_t *v)将v加1
原子操作比普通操作效率要低，因此必要时才使用，且不能与普通操作混]]></description><category></category></item></channel></rss>