Android Property
property的相关生成文件和设置 android通过SystemProperties的set和get方法来控制很多东西,一般上层添加一个控制开关可以使用这个方法,在系统里面存在很多个prop文件。它们分别是system/build.prop,system/etc/prop.default,vendor/build.prop,vendor/default.prop。下面分别来说下这几个文件的构成。 阅读全文
Android Graphics 调试技巧(十月份更新)
readelf命令查看ELF格式的文件信息常见的文件比如动态库(*.so)、静态库(*.a),常用命令:readelf -a libgui.so | grep test_string 阅读全文
nReal搭建Samepl APK
概述nrsdk是nreal开发混合现实体验的平台。使用简单的开发过程和高级api,nrsdk提供了一组强大的mr特性,并使nreal眼镜能够了解真实世界。 阅读全文
Android Handler消息循环处理机制(例ActivityThread)
整体流程 关键词:Handler、Looper、MessageQueue、handleMessage 消息被存放于消息队列,应用程序的主线程会围绕这个消息队列进入一个无限循环,知道应用程序退出。(消息循环过程是由Looper实现的) 如果队列中有消息,应用程序的主线程会把它取出来,分发给相应的Handler进行处理; 如果队列中没有消息,应用程序的主县城就会进入空闲等待状态,等待下一个消息的到来; 阅读全文
Android WMS和View基本理解
概述 Window 可以看做是Surface的一个包装,本质上,Window的本体就是一片Surface。将操作对象Surface,对象关联属性集以及操作方法等组合在一起便是 Window。Surface 其实是一块画布,应用可以随心所欲地通过 Canvas 或者 OpenGL 在其上作画,然后通过 SurfaceFlinger 将多块 Surface 的内容按照特定的顺序(ZOrder)进行混合并输出到 FrameBuffer,从而将 Android 漂亮的脸蛋显示给用户。既然每个窗口都有一块 Surface 供自己涂鸦,所以必然需要一个角色对所有窗口的 Surface 进行协调管理。于是,WMS 应运而生。 代码: http://aosp.opersys.com/xref/android-10.0.0_r2/xref/frameworks/base/core/java/android/view/ 阅读全文
C++ 运算符重载、友元、返回对象
运算符重载运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。 例如* 用于地址,将获得存储在这个地址中的值;而用于两个数字之间,得到的是乘积。 阅读全文
Android zygote和SystemServer进程
zygote和system_server在Android中的Java层很重要。 zygote分析 zygote由init进程根据init.rc的配置项创建的。最初叫app_process,但是在运行过程中,通过Linux的pctrl系统调用将其换成了zygote。通过adb shell ps -ef|grep zygote查看到该进程。 阅读全文
Android init进程
概述 init是Linux系统中用户空间的第一个进程。通过adb shell ps -rf查看我的一加手机进程信息。 12UID PID PPID C STIME TTY TIME CMDroot 1 0 0 12:43:34 ? 00:00:10 init init进程负责创建系统中的几个关键进程,例如zygote init提供了一个property service(属性服务)来管理Android系统的众多属性 阅读全文
C++头文件、作用域、内存模型和名称空间
单独编译C++提供#include语法,因而可以将程序划分,大致可以分成三部分: 头文件a.h:包含结构声明和使用这些结构的函数原型 源代码文件a.cpp:包含与结构相关的函数的代码 源代码文件b.cpp:包含调用与结构相关的函数的代码 阅读全文
Android JNI理解
概述 JNI,即Java Native Interface,Java本地调用。通过JNI可以实现: Java程序函数可以调用Natvie语言(C/C++)写的函数 Natvie程序函数可以调用Java层的函数 阅读全文
ubuntu输入法无法选择候选文字
解决方法1234#删除配置文件rm -rf ~/.cache/ibus/libpinyinibus-daemon -drxibus-daemon -drx 阅读全文
C++双冒号、点号、箭头的区别
箭头->和点号.声明一个结构: 123struct mystruct { int age;}; 阅读全文
Android中的makefile(Android.mk)
makefile是和make命令一起使用,在Android中,可以使用mm、mmm、mma进行编译。Makefile可以组织项目中各种库和代码之间的依赖,构建项目,和maven、gradle一样属于构建工具。常用于大型项目。 阅读全文
C++内联函数、引用变量、函数重载、函数模板
内联函数 常规函数调用使程序跳到另一个地址(函数的地址),并在函数结束后返回。来回跳跃并记录跳跃位置意味着一定的开销。内联函数使得编译器将相应的函数代码替换函数调用。程序无需跳到另一个位置处执行代码,再调回来。因而,内联函数运行速度比常规函数快,但是代价是需要占用更多的内存。如果程序在10个不同的地方调用调用同一个内联函数,则该程序将包含该函数代码的10个副本。 阅读全文
C++函数模块(函数指针、递归)
本章节主要是围绕函数为圆心,涉及到字符串、指针、C++11特性auto、typedef。由于接触android源码、opengl,需将C++学习一遍,之前只是用过java、c、c#这些。涉及到android源码,例如frameworks/native的surfaceflinger,gui,ui, 以及vender,hardware都是需要仔细的阅读C++代码才能够理解。再如graphics的测量、绘制渲染、硬件加速、合成显示,私以为学习一些图形学是有必要的。人生在勤,不索何获。 阅读全文
ubuntu搭建opengl环境
安装1234sudo apt-get install build-essentialsudo apt-get install libgl1-mesa-devsudo apt-get install libglu1-mesa-devsudo apt-get install freeglut3-dev 阅读全文
C++分支语句、逻辑表达式、字符函数库、switch、文本I/O
if语句 两种格式: if和if else 阅读全文
C++循环语句for, while, do-while
for循环12for (int i = 5; i < 0; i--) cout << "i=" << i <<endl; 阅读全文