- 博客(25)
- 收藏
- 关注
原创 git 自己常用命令
git initgit clonegit statusgit diffgit add ***git commit -m "****"git commit --amendgit push origna HEADS:refs/for/remote_branchgit format-patch -M commit_hashgit cherry-pick patch_file_namegit stashgit checkout -b local_branch
2022-05-24 16:21:06
180
原创 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
5327
原创 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
8779
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
1241
原创 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
3087
原创 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
2358
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
873
原创 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
2221
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
1782
原创 Android 智能指针
cpp 开发中,指针是比较难处理,如果是一个大系统,管理不善很可能出现内存泄漏(new之后没释放)/野指针(已释放,但还有其他再使用)等问题发生。java 使用引用的方式,不开放指针的操作,所以java side基本没这个问题。有效解决上述问题的方式,andorid 设计一套方法(智能指针)自动管理指针的释放和引用情况,同时内部借助引用计数的方式解决在还有人使用时不释放指针。...
2021-12-17 16:55:55
2213
原创 为什么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
1837
原创 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
3573
原创 low memory killer
1 android 作为移动设备的操作系统,可能出现管理的内部不足的情况,为了尽量保证程序继续运行,需要有机制处理相关的内存问题。2 Android 操作系统是基于linux的,linux 系统具有缓存内存的功能,即为了加快下次的速度,打开文件后放到内存中,再关闭后不会自动释放掉该内存,所以是cache memory。会出现linux设备内存有多大,linux系统就会尽量多占用内存,减少下次启动的时间。再内存不够用的时候才会去释放。Android 设备也学习了linux的这个机制,但做了部.
2021-12-15 14:41:45
2277
原创 android 基础知识点
1 shared memory2 low memory killer3 art: android runtime 虚拟机,包括classloader4 智能指针5 同步6 JNI7 进程间通信--binder8 消息机制--handleloop9 apk 进程的创建
2021-12-14 16:58:11
685
原创 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
4223
1
原创 cpp 知识点
1. const:不可变const char *p; char const *p; 两者相同,都是指针内容不可修改char * const p; 指针不可修改。const char* const p; 指针和指针内容都不可修改const int a; c++ 中类似#define, 值替换,#define是编译时生效,const是运行时生效; const会有类型检测。2 强制类型转换reinterpret_cast: 修饰指针,转换成long,再有long转成指针...
2021-09-02 10:31:43
995
1
原创 23种设计模式
一、创建类模式:对象的创建和管理职责 - 在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大的灵活性。工厂方法模式 - 定义一个用于创建产品的接口,由子类决定生产什么产品。抽象工厂模式 - 是工厂方法模式的升级版本,提供一个创建产品族(如抢和子弹/ 电脑和键盘等)的接口,其每个子类可以生产一系列相关的产品。工厂方法是由子类自行决定实例化那个类,而抽象工厂是自己决定实例化哪个类。至于是组合还是继承还是实现接口都无所谓。...
2021-08-27 19:08:36
105
原创 四种排序的实现:冒泡、插入、归并、快速
冒泡排序:O{n2} 从后往前,两两比较换位选择排序:O(n2) 选择最小的,与最前面的换位插入排序:O(n2) 从前往后,两两比较换位堆排序: O(nlogn) 使用树结构,树顶点最大,取出后重新排列剩余树。归并排序:O(nlogn) 分两组,在组内继续细分两组,直到一个为一组,然后比较相邻两组,比较换位快速排序:O(nlogn) 找基准值,分左右两侧,左侧比基准小,右侧比基准大,在两侧内继续执行快速排序。冒泡排序:#include <iostream>.
2021-08-20 15:53:35
160
原创 openssl 关于CA的使用
第一步:创建目录结构这些结构与config文件有关系A创建目录结构:certs、client、crl、newcerts、privateB创建文件index.txt serialC echo "01" > /etc/pki/CA/serial第二步:配置文件配置config文件:openssl.cnf/etc/ssl/openssl.cnf有系统的default文件;但不能直接运行,需要修改成自己的路径和key[ CA_default ]dir..
2021-08-03 17:01:38
968
原创 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
4146
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
1372
2
原创 2020-11-13
《深入理解java 虚拟机:JVM高级特性及最佳实践》 知识记录:2.1 JVM在执行java程序的过程中管理的内存分为了以下几个运行时数据区域:方法去(method area)堆(heap) --- > 由所有线程共享的数据区 虚拟机栈(VM stack) 本地方法栈(native method stack) 程序计数器(program counter register) --> 线程隔离的数据区程序计数器: 是一块比较小的内存空间,是当前线程执行的字节码的行号指...
2020-11-13 17:41:36
110
原创 2020 书籍记录
2020 书籍记录记录2020,希望能看到50本,一周一本, 最近比较懒。半年已过还差好多。加油吧。doing:论人类不平等的起源和基础 – 卢梭 – 浙江文艺出版社todo:android投资文学done:游戏改变世界 — 简·麦戈尼格尔—浙江人民出版社沉默的大多数 – 王小波 — 北京十月文艺出版社一只特立独行的猪 – 王小波 — 北京十月文艺出版社唐诗杂论 – 闻一多 – 万卷出版公司设计模式之禅 – 秦小波 – 机械工业出版社瓦尔登湖 – 亨利.戴维.梭罗 – 人民
2020-06-23 17:13:58
136
转载 如何高效的使用百度谷歌去搜索
1. “搜索内容”: 使用“”限定搜索内容,仅搜索包含此搜索内容的网址,不会把其他相关内容也会列出来。2.t:搜索内容,仅将搜索内容限定网站的title3.intitle:搜索内容,仅将搜索内容限定在网页的title里面,不去搜索网址的content内容。4. 搜索内容 intitle:搜索title, 在intitle的结果中在将含有搜索内容的列出来。5.搜索内容 site:
2016-04-09 09:47:02
285
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人