sunwengang blog

sunwengang blog

it's better to burn out than to fade away

Android Graphics 调试技巧(十月份更新)
readelf命令查看ELF格式的文件信息常见的文件比如动态库(*.so)、静态库(*.a),常用命令:readelf -a libgui.so | grep test_string 查看手机内存123456789adb shellcat proc/meminfoMemTotal: 7821184 kBMemFree: 157484 kBMemAvailable: 2765976 kBBuffers: 175624 kBCached: 2264796 kB...... adb logcat缓存管理12345678...
nReal搭建Samepl APK
概述nrsdk是nreal开发混合现实体验的平台。使用简单的开发过程和高级api,nrsdk提供了一组强大的mr特性,并使nreal眼镜能够了解真实世界。 nrsdk为开发者提供了五个核心特性: 空间计算使眼镜能够跟踪它们相对于世界的实时位置,并了解周围的环境,例如检测和跟踪平面和图像。 优化的渲染自动应用于应用程序并在后端运行,以最小化延迟并减少抖动,增强总体用户体验。 多模态交互为不同的用例提供了交互的直观选择。 提供了开发工具,以便您可以更好地开发和调试应用程序。 第三方集成是通过为第三方sdk提供数据来实现的,这允许您充分利用nreal light的硬件功能并构建功能强大的mr...
Android Handler消息循环处理机制(例ActivityThread)
整体流程 关键词:Handler、Looper、MessageQueue、handleMessage 消息被存放于消息队列,应用程序的主线程会围绕这个消息队列进入一个无限循环,知道应用程序退出。(消息循环过程是由Looper实现的) 如果队列中有消息,应用程序的主线程会把它取出来,分发给相应的Handler进行处理; 如果队列中没有消息,应用程序的主县城就会进入空闲等待状态,等待下一个消息的到来; 消息循环(以ActivityThread为例)应用程序的消息循环是从 ActivityThread 的 main()函数入口的,在 main()函数中会调用Looper.prepareM...
Android WMS和View基本理解
概述 Window 可以看做是Surface的一个包装,本质上,Window的本体就是一片Surface。将操作对象Surface,对象关联属性集以及操作方法等组合在一起便是 Window。Surface 其实是一块画布,应用可以随心所欲地通过 Canvas 或者 OpenGL 在其上作画,然后通过 SurfaceFlinger 将多块 Surface 的内容按照特定的顺序(ZOrder)进行混合并输出到 FrameBuffer,从而将 Android 漂亮的脸蛋显示给用户。既然每个窗口都有一块 Surface 供自己涂鸦,所以必然需要一个角色对所有窗口的 Surface 进行协调管理。...
C++ 运算符重载、友元、返回对象
运算符重载运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。 例如* 用于地址,将获得存储在这个地址中的值;而用于两个数字之间,得到的是乘积。 要重载运算符,可以使用被称为运算符函数的特殊函数形式,运算符函数的格式如下:operator(argument-list) 例如operator+()重载+运算符,operator*()重载*运算符。op必须是有效的运算符,不能虚构新的符号。比如不存在operator@()。 1234567Time Time::operator+(const Time &t) const { Time sum; s...
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-10.0.0_r2 AOSP源码中,查看其入口函数: frameworks/base/cmds/app_process/app_main.cpp1234567891011121314151617181920212223242526272...
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系统的众多属性 init分析 使用android-10.0.0_r2 AOSP最新源码(http://...
C++对象和类
类型指定基本类型完成了三项工作: 决定数据对象需要的内存数量 决定如何解释内存中的位(long和float所占位数相同,但是将他们转换成数值的方法不同) 决定可使用数据对象执行的操作和方法 类class类规范由两部分组成: 类声明:以数据成员的方式描述数据部分,以成员函数(方法)的方式描述公有接口 类方法定义:描述如何实现类成员函数 即类声明提供类的蓝图,方法定义则提供了细节。 类声明举例: stock00.h12345678910111213141516171819#ifndef STOCKOO_H_#define STOCKOO_H_#include<string>...
C++头文件、作用域、内存模型和名称空间
单独编译C++提供#include语法,因而可以将程序划分,大致可以分成三部分: 头文件a.h:包含结构声明和使用这些结构的函数原型 源代码文件a.cpp:包含与结构相关的函数的代码 源代码文件b.cpp:包含调用与结构相关的函数的代码 头文件内容和引用 头文件常包含的内容: 函数原型 使用#define或者const定义的符号常量 结构声明struct 类声明class 模板声明template 内联函数inline 头文件引用时,使用#include "coordin.h",而不是#include <coordin.h>因为尖括号的文件...
Android JNI理解
概述 JNI,即Java Native Interface,Java本地调用。通过JNI可以实现: Java程序函数可以调用Natvie语言(C/C++)写的函数 Natvie程序函数可以调用Java层的函数 MediaScanner示例 使用Android Xref提供的 Android 9.0.0_r3的源码 Java层的MediaScanner完成两件事: 加载JNI库 Java的native函数 frameworks/base/media/java/android/media/MediaScanner.java12345678910111213141516publ...
avatar
wizzie
focus on android graphics