
Android
文章平均质量分 90
程序员-薯片
公众号【程序员薯片】
专注于:
1.AI+应用实战研究&开发。
2.码农中年危机自救指南研究&探索。
3.码农视觉的读书感悟&分享。
展开
-
一次跳槽,从16K到26K,我做对了这三件事
当暴风雨来临的时候我们需要躲进屋子里躲雨,当太阳升起的时候,我们需要出去向外奔跑寻求光明。AI正在争分夺秒地重构人类生活方方面面的范式,而我们当前正处于马车被蒸汽机取代的剧变期。要继续当马车夫,还是拥抱变化去学习驾驶技术实现阶层跃迁,这取决于我们的认知。毕竟当局者迷。这是个最好的时代,AI给我们普通人带来了太多的机会,让我们普通人只要抓住一两个大机会就可以跨级阶层。这也是个最坏的时代,因为如果我们抓不住机会,就会被沦为时代的弃子。无论我们从事的是哪一行哪一业,都应该理解AI、拥抱AI、使用AI。原创 2025-03-17 23:40:15 · 719 阅读 · 1 评论 -
【Android GUI】FramebufferNativeWindow与Surface
FramebufferNativeWindow是为surfaceflinger服务的,由Gralloc提供。surface虽然为应用程序服务的,但是本质上还是由surface flinger服务统一管理的。原创 2024-04-17 14:59:31 · 1341 阅读 · 0 评论 -
【Android GUI】从总体上了解Android的GUI体系
Android的HAL层提供了Gralloc,包括fb和gralloc两个设备。VSync是“Project Butter”加入的同步机制,可以通过硬件产生,也可以通过软件,即VSyncThread模拟。Framebuffer是内核系统提供的图形硬件的抽象描述,它占用了系统存储空间的一部分,是一块包含屏幕显示信息的缓冲区。Gralloc对应的模块是由FramebufferNativeWindow在构造函数中加载的。Android中,Framebuffer提供的设备文件节点是。原创 2024-04-17 11:57:25 · 1184 阅读 · 1 评论 -
【Android】Activity task和Instrumentation杂谈
Android不仅可以装载众多的系统组件,还可以将它们跨进程组成ActivityTask,这个特性使得每个应用都不是孤立的。原创 2024-04-16 15:03:40 · 1282 阅读 · 0 评论 -
【Android AMS】startActivity流程分析
AMS是个用于管理Activity和其它组件运行状态的系统进程。原创 2024-04-16 11:07:05 · 853 阅读 · 0 评论 -
【Android surface 】二:源码分析App的surface创建过程
我们来回顾和总结一路过来的分析,为后续破解surfaceflinger做准备。创建了一个SurfaeComposerClient,调用它的createSurface,拿到一个SurfaceControl对象。调用SurfaceControl的writeToParcel把信息写道parcel中。根据parcel的信息构造一个surface对象,并保存到java层的mSurface对象中。这样viewroot得到了一个native的surface对象。原创 2024-04-12 16:29:36 · 1497 阅读 · 1 评论 -
【Android Surface】从Activity的创建到Surface的创建,源码分析1
我们知道Android绘制图形依靠的是surface和surface flinger,但是当我说起这句话的时候,你脑海里面能复现出一幅图画,里面展示了Android绘制图像,然后渲染到屏幕这整个执行流程吗?如果没有,一起来研究研究Android的这个机制。我想,理清楚之后,作为Android开发的我们,必定获益良多。先看看surface系统的的整体关系:不论是使用Skia绘制二维图像,还是使用OpenGL绘制三维图像,APP都会Surface进行交互。原创 2024-04-12 11:09:51 · 1219 阅读 · 0 评论 -
【Android ServiceManager】从源码入手,剖析ServiceManager是如何处理客户端的请求的?
代码分析到这里,我们总结下,前面代码中ServicManager打开了binder设备,让自己成为manager,接着进入循环并通过ioctl与binder设备进行交互,用于来处理客户端发过来的消息。我们不禁去思考ServiceManager存在的价值是什么。ServiceManager可以通过字符串查找对应的Service,这个与DNS很类似。并且ServiceManager对服务进行了权限控制,使得并非所有服务都能进行注册,这无疑提高了Android的安全性和各种服务的条理性。原创 2024-04-03 13:50:42 · 857 阅读 · 0 评论 -
【Android Binder】从源码出发,剖析Binder机制的实现流程
在这里我们可以做一个总结:这行代码中创建了BpBinder对象,然后把BpBinder对象作为参数新建了了一个BpServiceManager对象。sm就是这个BpServiceManager对象。一个是BpBinder对象,它的handle值为0,。一个BpServiceManager对象,它的mRemote值为BpBinder对象。而且BpServiceManager实现IServiceManager接口,又有了BpBinder作为通信代表。到这里进行通信的准备做的差不多了。但是还差些什么。原创 2024-04-02 11:09:37 · 1326 阅读 · 0 评论 -
【Android Handler】从源码出发,一步步窥探Handler在Java层的数据结构关系和执行原理
Handler作为消息机制在整个Android系统里面起到了无可替代的作用,我们今天来探讨下这个无比重要的机制的实现细节。原创 2024-03-29 15:42:27 · 1050 阅读 · 0 评论 -
【Android 源码】Android源码下载指南
这是关于Android源码下载的过程记录。环境:Windows上通过VMware安装的Ubuntu系统。原创 2024-03-23 11:38:04 · 911 阅读 · 0 评论 -
【Android 需求方案实现】 在屏幕上画一条线的时候,如何把这条线经过的所有坐标点(高效&有序&完整)地发送出去?
*** 监听签名坐标*//*** click down的坐标*//*** touch move的坐标*/原创 2024-02-26 11:48:19 · 1267 阅读 · 0 评论 -
【Android 问题排查】为什么XML中设置的长宽和代码通过getWidth的值对不上?
记一次xml尺寸和代码获取尺寸不同的问题排查原创 2024-02-23 11:19:41 · 522 阅读 · 0 评论 -
【Android】Android 固件和内核启动过程概览
Android手机用来这么久,来了解下刷机的时候Android 固件和内核启动过程是怎么样的?原创 2024-01-26 11:32:34 · 1206 阅读 · 0 评论 -
【Android】Android中的系统镜像由什么组成?
一起来看看Android的镜像系统里面都有什么!原创 2024-01-24 17:42:27 · 1503 阅读 · 0 评论 -
【Android】细数Linux和Android系统中的伪文件系统
做了好些年Android开发,你了解过Linux伪文件系统吗?不妨来学习一下,增强我们的技术垂直度。原创 2024-01-23 18:57:52 · 1480 阅读 · 0 评论 -
[Android] Android文件系统中存储的内容有哪些?
一文带你深入浅出地读懂Android文件系统的方方面面原创 2024-01-23 11:44:30 · 1440 阅读 · 0 评论 -
[Android] Android架构体系(2)
是 Android 中所有进程间通信的关键,它源自于 BeOS。不过 Android 中的这个组件是使用启发式的方法来寻找要被杀掉的进程的,而 Linux 原有的进程终止器是以一种更具确定性的方式控制杀进程的行为的,而且还允许定义内存压力等级。它的主要客户端是设备中的振动器(vibrator)功能框架(通过硬件抽象层)可以把一个数值(单位为毫秒)写入/sys/classtimedoutput/vibrator/enable 中,这样就启动了振动器,并让振动器振动了这个值规定的时间之后停下来。原创 2024-01-18 21:33:05 · 1337 阅读 · 0 评论 -
[Android] Android架构体系(1)
尽管谷歌宣称选择 Bionic 的理由主要是因为它的简洁性,但实际上合法性的考虑也占了很重要的位置。虽然偏离得并不是很远,但它运行的是一种完全不同形式的字节码(这种字节码叫作 DEX,也就是“Dalvik EXecutable”的缩写),而且相对于 Sun/Oracle 设计的JVM,它在执行效率和共享内存方面做了更多的优化。而用户的应用则是编译成Dalvik 字节码的,但字节码是运行在 Dalvik 虚拟机的上下文环境中的(或者在 ART 中,是在运行之前被编译成原生代码的)。原创 2024-01-17 18:28:35 · 1330 阅读 · 1 评论 -
【Android】Android与Linux的异同概况
而在用户态这一级上,由于引入了两个全新的组件 Dalvik 虚拟机运行时和硬件抽象层(Hardware Abstraction Layer)。再加上替换了 Bionic 的 glibc,以及提供了一个定制版本的 init(系统启动守护进程),Android 和 Linux 的分歧就大多了。不过尽管是这样,操作系统更多底层的大部分组件仍然没有被修改过,那些原生二进制可执行文件以及进程和线程的行为仍然和它们在 Linux 系统中时一模一样。原创 2024-01-17 10:27:20 · 1480 阅读 · 0 评论 -
apk install 错误,错误码:Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI] 的解决方案和原因
这样做的目的是为了防止开发者在开发或测试阶段的应用版本中包含不应该发布到用户设备上的特殊功能、调试代码或配置。当试图将标记为测试应用的应用安装到非开发设备上时,系统会拒绝安装并报告。,那么该应用将被标记为测试应用。的错误是由于尝试在设备上安装被标记为测试应用程序的应用时触发的。这个标志是为了确保在开发和测试阶段不会意外将测试版本的应用程序安装到用户设备上。应用的构建配置可能没有正确设置为发布版本而是测试版本。发布版本和测试版本可能有不同的构建配置。或类似的标志,以确保在发布版本中正确设置了构建配置。原创 2024-01-05 16:50:07 · 4027 阅读 · 0 评论 -
Android apk完整性检测的实现思路和实现过程全记录
在入口activity中判断是否完整性校验通过,假如不通过,可以弹窗提示然后锁定APP,让用户重新在安全的平台重新下载安装。行业相关,对安全性较高的程序一般都需要添加完整性检测的功能,以防止程序被篡改,从而导致安全问题的发生。可以在application中执行,计算apk的hash值并写文件的操作是耗时操作,记得开子线程进行。这个只是工具类,方便获取Application ,只要获取context即可,可以随意发挥。相关的支付应用项目今年也做了好几个,这些程序也都已通过了行业相关安全标准的认证。原创 2023-12-21 17:16:09 · 879 阅读 · 0 评论