![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
文章平均质量分 70
入琞
这个作者很懒,什么都没留下…
展开
-
OpenGL 学习记录
OpenGL 基本知识梳理原创 2022-10-12 17:58:02 · 243 阅读 · 1 评论 -
android Tombstone 流程
1 ANR会触发dump trace信息watchdog里面会监控system server主要service的状态,如果发生anr就会监控到,然后调用ActivityManagerService.dumpStackTrace API,。这边会有dump的进程信息,watchdog中会有指定dump的native 进程,ams 会有check的extra 进程。2 针对每个进程进行for循环dump trace信息。ams>android_os_Debug>debuggerd_c原创 2022-05-20 11:58:35 · 4641 阅读 · 0 评论 -
Android SurfaceFlinger中Fence机制--个人理解整理
1 Fence 是什么?Fence中文是栅栏/围墙的意思,理解成分界/界限的东西。android中的一个资源锁机制。(i.e. a kind of memory barrier)下面链接是english 介绍Bringing Android explicit fencing to the mainline2 Fence是干什么的?android 从4.4开始提供提供了fence机制,协调下面各模块的运作。各模块都是操作的buffer信息,所有对于buffer加一个资源锁,就可以实现buf原创 2022-05-19 15:46:11 · 6769 阅读 · 1 评论 -
ANR总结
1 ANR即Application Not Responding(应用程序无响应)2 只有java才会产生,因为是JVM收到异常信号后触发的该逻辑。所以native 层或者apk的jni以下不会产生anr。3 kill -3 pid_number产生应用的trace文件,会打印该进程的各线程堆栈4 ANR一般是主线程...原创 2022-01-13 09:57:30 · 1223 阅读 · 0 评论 -
fd 的泄漏
1 android 系统是基于linux系统上面, linux是一切皆文件的设计。可以代表文件、socket、pipe、memory、io等2 fd 是file descriptor,是一个非负整数,是一个索引值,一个文件句柄文件描述符0与进程的标准输入关联文件描述符1与进程的标准输出关联文件描述符2与进程的标准错误关联3 linux系统对每个进程都有fd的数量限制, android 同样也有,android 的限制是1024.4 当fd满了后,创建fd就会失败,并返回有些信息如:原创 2022-01-12 18:13:46 · 2907 阅读 · 0 评论 -
android hidl 总结
google HIDL的定义1 android 提供了一套system img与vendor image 通信的机制,为hal定义了一套接口语言,类似aidl2 HIDL其实也是一套binder 通信机制,只是该通信机制的driver使用的是hw binder。android 提供了对应的hw servicemanager,IPCThreadState和ProcessState的等binder code,与正常binder功能差不多。3 定义的HIDL 类似aidl,是一个文件,该文件中定义原创 2022-01-10 11:30:05 · 2174 阅读 · 2 评论 -
Binder 总结
1 android 进程间通信的主要机制: binder2 binder 实现一次memcpy:3 binder 的memory 封装出来了统一类:Parcel4 IINTERFACE是接口封装,定义Proxy端和server端的接口形式5 BpInterFace 其实是BpBinder的代理类,内部的mRemote指的就是BpBinder6 asInterFace的接口在android 内部已经定义了一个宏,内部实现是new BpInterFace(BpBinder)7 BpBin原创 2022-01-07 10:31:01 · 847 阅读 · 0 评论 -
android apk的sepolicy domain是如何指定的呢
1 ps -AZ可以看到对应进程的sepolicy domain信息如下面的 platform_app gmscore_app priv_app mediashell_appu:r:platform_app:s0:c512,c768 u0_a66 954 383 1109868 51060 do_epoll_wait 0 S com.android.systemuiu:r:gmscore_app:s0:c512,c768 u0_a41原创 2021-12-29 11:15:07 · 2006 阅读 · 5 评论 -
android message handler
1 Android 提供了一套异步处理消息机制;有提供两套的实现方案:java side和cpp sidejava side:Handler / Message/Looper/MessageQueuecode 路径:frameworks/base/core/java/android/os/Looper.javaframeworks/base/core/java/android/os/Message.javaframeworks/base/core/java/android/o..原创 2021-12-22 18:10:20 · 1714 阅读 · 0 评论 -
android 基础知识点
1 shared memory2 low memory killer3 art: android runtime 虚拟机,包括classloader4 智能指针5 同步6 JNI7 进程间通信--binder8 消息机制--handleloop9 apk 进程的创建原创 2021-12-14 16:58:11 · 664 阅读 · 0 评论 -
Android 智能指针
cpp 开发中,指针是比较难处理,如果是一个大系统,管理不善很可能出现内存泄漏(new之后没释放)/野指针(已释放,但还有其他再使用)等问题发生。java 使用引用的方式,不开放指针的操作,所以java side基本没这个问题。有效解决上述问题的方式,andorid 设计一套方法(智能指针)自动管理指针的释放和引用情况,同时内部借助引用计数的方式解决在还有人使用时不释放指针。...原创 2021-12-17 16:55:55 · 2104 阅读 · 0 评论 -
为什么google apk 的adj为100
1 google gms的apk adj是100console:/ # ps -A | grep gmsu0_a40 1276 382 1251444 58220 do_epoll_wait 0 S com.google.android.gms.persistentu0_a40 1438 382 1366508 67448 do_epoll_wait 0 S com.google.android.gmsu0_a40 ...原创 2021-12-16 16:30:38 · 1675 阅读 · 0 评论 -
android 修改adj的方法
android提供了low memory killer的机制在内存不足时回收内存。lmk 使用adj的方式判断该回收哪些进程或资源android 修改adj的方法1 native side-- 直接写文档/proc/**/oom_score_adj结论:所有的native bin档都是由init进程管理,并设置adj,默认是-1000,可以在**.rc中配置A init 进程system/core/init/init.cppint SecondStageMai...原创 2021-12-16 10:45:51 · 3179 阅读 · 0 评论 -
low memory killer
1 android 作为移动设备的操作系统,可能出现管理的内部不足的情况,为了尽量保证程序继续运行,需要有机制处理相关的内存问题。2 Android 操作系统是基于linux的,linux 系统具有缓存内存的功能,即为了加快下次的速度,打开文件后放到内存中,再关闭后不会自动释放掉该内存,所以是cache memory。会出现linux设备内存有多大,linux系统就会尽量多占用内存,减少下次启动的时间。再内存不够用的时候才会去释放。Android 设备也学习了linux的这个机制,但做了部.原创 2021-12-15 14:41:45 · 2141 阅读 · 0 评论 -
missing and no known rule to make it
FAILED: ninja: '/AndroidManifest.xml', needed by 'out/target/common/obj/APPS/PressureTest_intermediates/manifest/AndroidManifest.xml', missing and no known rule to make it最后查来查去,发现是 Android.mk 中多了个空格,导致local 目录错误...原创 2021-09-26 15:02:25 · 4016 阅读 · 1 评论 -
GraphicBufferProducer的引用关系
最近碰到一个问题:压测SurfaceFlinger 会crash掉,提示383 783 F SurfaceFlinger: Suspected IGBP leak: 4097 IGBPs (4096 max), 49 Layers本文侧重点是介绍IGBP的创建与销毁。一. GraphicBufferProducer 的server端该log是SurfaceFlinger.cpp中打印的,其代码段如下status_t SurfaceFlinger::addClientLayer..原创 2021-07-30 17:38:15 · 3402 阅读 · 14 评论 -
android shared memory知识点
android memory share 涉及模块:driver/ libcutils/ cpp端封装/java 端封装1 driver基于tmpfs实现的ashmem驱动程序,负责内存的分配和管理。对应的misc device节点是/dev/ashmem; 提供的接口主要有:init:设备初始化open:打开设备release:设备对应的内存释放:mmap:内存映射ioctl(pin/unpin):内存锁定和解锁driver 作用:使用tmpfs系统,读写速度快,将部分memory原创 2021-07-23 18:42:46 · 1240 阅读 · 2 评论