Android
文章平均质量分 72
wd623894174
这个作者很懒,什么都没留下…
展开
-
AndroidR Logd原理
文章目录0. 相关文件目录1. ALOGD写log流程1.1 ALOGD打印log,传入可变参数1.2 logdw socket写log1.3 pmsg写入 /dev/pmsg02. logcat读取流程2.1 logcat调用liblog流程2.2 logformat_ 申请和释放2.3 logger_list申请和释放2.4 android_logger_open打开设备log2.5 android_logger_list_read获取buffer2.6 android_log_printLogLine原创 2022-02-07 16:23:00 · 2986 阅读 · 0 评论 -
Android Input Log
打开LOG开关#inputFlinger负责事件读取分发frameworks\native\services\inputflinger\InputDispatcher.cppframeworks/native/services/inputflinger/InputReader.cppframeworks/native/services/inputflinger/Eventhub.cpp### input库frameworks\native\libs\input\InputTransport.c原创 2021-01-29 15:23:28 · 2422 阅读 · 0 评论 -
Android Watchdog介绍和实例分析
文章目录1. Watchdog是什么?2. Watchdog代码基本介绍3. 原因分析4. 实例分析例1:SystemServer Binder耗尽例2:IO阻塞例3:Thread.sleep阻塞1. Watchdog是什么?Android Watchdog主要是检测system server重要线程状态(main,android io,android display ,Activitymanager,android fg,android bg等线程 )的一种机制。发生Watchdog时会触发Andro原创 2020-08-17 16:57:20 · 2371 阅读 · 0 评论 -
ANR实例
文章目录什么是ANR?常见的原因1. 主线程耗时Blocked2. Binder耗时Blocked3. 被子线程同步锁block4. Binder线程耗尽什么是ANR?以下四个条件都可以造成ANR发生:InputDispatching Timeout:5秒内无法响应屏幕触摸事件或键盘输入事件BroadcastQueue Timeout :在执行前台广播(BroadcastReceiver)的onReceive()函数时10秒没有处理完成,后台为60秒。Service Timeout :前台服务20原创 2020-08-17 16:56:32 · 1079 阅读 · 0 评论 -
ANR trace详解
文章目录1. Trace pattern2. 解释3. 关键词对照1. Trace pattern1."Signal Catcher" daemon prio=5 tid=3 Runnable2. | group="system" sCount=0 dsCount=0 obj=0x32c050d0 self=0x7f97dd14003. | sysTid=9729 nice=0 cgrp=default sched=0/0 handle=0x7fa200e4504. | state=R sc原创 2020-08-17 16:55:58 · 4852 阅读 · 0 评论 -
Android 重启类型
文章目录1. system_server 重启2. NETD重启3. surfaceFlinger重启4. zygote 重启5. init 重启1. system_server 重启systemserver重启原理是因为zygote进程,监视所有子进程,systemserver died就会触发,zygote kill self@frameworks/base/core/jni/com_android_internal_os_Zygote.cpp//pid=-1 等待任何子进程,此时的waitp原创 2020-08-17 16:55:20 · 888 阅读 · 0 评论 -
Bugreport原理
文章目录1. bugreport2. bugreportz3. adb bugreport4. dumpstate1. bugreport2. bugreportz3. adb bugreport4. dumpstate1. bugreport编译到/system/bin/bugreport@frameworks/native/cmds/bugreport/Android.bpcc_binary { name: "bugreport", srcs: ["bugreport.cpp"]原创 2020-08-17 16:52:45 · 2853 阅读 · 0 评论 -
CSDN博客列表
文章目录Stability(稳定性)performance(性能)Boot up && shutdown(开关机)Debug相关SystemUIAMSWMSAndroid build(编译)BinderInputSensorStability(稳定性)Android Watchdog机制介绍与分析Native Crash基本分析ANR基本分析Android...原创 2020-03-05 11:16:33 · 300 阅读 · 0 评论 -
Android ArrayBlockingQueue使用
1. ArrayBlockingQueue使用示例阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。...原创 2019-12-10 14:56:26 · 1908 阅读 · 0 评论 -
Apktool和jadx反编译apk
1.准备工具1.jdk.82.apktool_2.3.4.jar apktool_2.3.4.jar下载地址 https://blog.csdn.net/ysc123shift/article/details/529854353.dex2jar_2.0.zip dex2jar_2.0.zip下载地址 https://www.cr173.com/soft/27335.ht...原创 2018-10-17 19:07:01 · 906 阅读 · 0 评论 -
Input事件调试分析
Log可以查看此MTK FAQ打开,使用eng版本会默认打开部分Log「FAQ」如何抓取framework input事件相关logInputdispatcher.cppViewDebugManager.javaPhoneWindowManager.javaWindowManagerDebugConfig.java目前从main log看到的流程ViewRootImpl xx...原创 2019-03-07 20:43:37 · 669 阅读 · 0 评论 -
FAILED BINDER TRANSACTION
1.异常Log PatternBroadcastQueue: Can't deliver broadcast to com.my.app (pid 8047). Crashing it.ActivityManager: Killing 8047:com.my.demo/1000 (adj 0): scheduleCrash for 'can't deliver broadcast' fa...原创 2019-08-28 10:25:16 · 4387 阅读 · 0 评论 -
Android Keyguard--灭屏锁屏流程
1.PowerManagerService和PhoneWindowMangerService主要调用了Keyguard的onStartedGoingToSleep和onFinishedGoingToSleep@/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java#6676p...原创 2019-08-28 10:22:19 · 1080 阅读 · 0 评论 -
Android Keyguard--指纹解锁流程
参考文章 https://www.jianshu.com/p/b07fb1e48d71何时开始监听指纹传感器?先来看下IKeyguardService这个binder接口有哪些回调吧// 当另一个窗口使用FLAG_SHOW_ON_LOCK_SCREEN解除Keyguard时PhoneWindowManager调用 public void setOccluded(bool...原创 2019-03-07 20:43:30 · 3637 阅读 · 0 评论 -
Message Looper Handler MessageQueue
大概过程: 1.新建线程调用Looper.prepare,初始化和Looper 和 MessageQueue 2.Looper.loop() 循环queue.next() 并 分发消息dispatchMessage 3.Handler.sendMessage -- enqueueMessage把消息连到Message.next上,如链表结构,就放到了消息队列(Messa...原创 2019-02-20 22:08:20 · 142 阅读 · 0 评论 -
Settings 获取app存储大小
设置里面的app信息里面存储里面的app Size对应stats.codeSize,读取流程如上,可以添加log要了解,可以主动抛异常来看流程StorageStatsService.queryStatsForPackage-->StorageStatsService.queryStatsForUid -->Installer.getAppSize -->InstalldNat...原创 2019-03-07 20:06:39 · 526 阅读 · 0 评论 -
源码编译之Android.mk和Android.bp
简介Android.mk和Android.bp都是差不多的。Android.bp是google在android N之后新的编译配置文件。源码在:build/soong/androidmk我们在out下面找下androidmk工具,如果没有可以执行命令:m -j blueprint_tools然后在在out/soong/host/linux-x86/bin/androidmk生成工具...原创 2019-03-07 20:11:00 · 7345 阅读 · 0 评论 -
Android dumpsys实现原理
1.dumpsys源码原理adb shell dumpsys时候是使用如下的dumpsyscc_binary表示为可执行bin文件,为dumpsys@/frameworks/native/cmds/dumpsys/Android.bpcc_binary { name: "dumpsys", defaults: ["dumpsys_defaults"], src...原创 2019-03-07 20:19:55 · 2489 阅读 · 0 评论 -
Android源码 app预制带so和assets文件的aar包(sdk)
1.app引用aar包//不带so和assets目录预制方法如下LOCAL_STATIC_JAVA_AAR_LIBRARIES += dmssdkr//有些还需要导aar包(com.sensetime.dms)LOCAL_AAPT_FLAGS := --auto-add-overlayLOCAL_AAPT_FLAGS += --extra-packages com.sens...原创 2019-08-28 10:24:36 · 3342 阅读 · 1 评论 -
Android源码预制基础
1.调用mk生效$(call inherit-product-if-exists, $(DEVICE_SOURCES)/preinstall/preinstall.mk)$(call inherit-product-if-exists, $(DEVICE_SOURCES)/images/prebuilts/prebuilts.mk)$(call inherit-product, devi...原创 2019-08-28 10:24:01 · 1721 阅读 · 0 评论 -
Android Bootanimation制作(c段和p段)
原理请参考我的上一篇博客介绍https://blog.csdn.net/wd229047557/article/details/81916410开机的时候,先把part1里面的图片都播放一遍,然后再循环播放part0里面的文件,直到进入系统。那么decs.txt文档的内容应该如下:32048015p 10 part1p00part0第一行,320 480是...原创 2019-08-28 10:25:24 · 752 阅读 · 0 评论 -
Android 优化开机启动
参考网址:https://blog.csdn.net/myvest/article/details/51741965Android开机启动慢,是一个众所周知的问题。优化方向:1、预加载的优化在网上看的资料,对于开机启动来说,耗时最久的是preload classes和scan packages。所以第一个优化方向就是预加载类。 这是在网上看的· preloaded-classes list中预加载...转载 2018-06-22 14:42:11 · 2200 阅读 · 0 评论 -
Android开机速度优化简单回顾
参考地址:https://blog.csdn.net/freshui/article/details/53700771Android的开机速度,基本上没人说快的,通常移植完系统后,马上要看的事情就是优化开机时间,以下是简单回忆以下以前做优化的那些事。开机时间都花在哪?优化开机时间,通常做的首先是那有有没有BUG,明显不合理的先解决,由于开发阶段稳定性问题,一些地方可能延时加的大,或者频率设的低,先...转载 2018-06-22 14:08:10 · 1901 阅读 · 0 评论 -
android开机动画启动流程
参考地址:https://blog.csdn.net/happy_6678/article/details/46236831从android的Surface Flinger服务启动分析知道,开机动画是在SurfaceFlinger实例通过调用startBootAnim()启动的。下面我们就一起学习BootAnim是如何启动和结束的,我精读代码前都喜欢先描出框架图,以此图为基础再去研读会达到事半功倍...转载 2018-06-22 11:41:05 · 2467 阅读 · 0 评论 -
系统悬浮窗简介与使用
参考地址: https://www.cnblogs.com/mengdd/p/3824782.htmlWindowManager介绍 通过Context.getSystemService(Context.WINDOW_SERVICE)可以获得 WindowManager对象。 每一个WindowManager对象都和一个特定的 Display绑定。 想要获取一个不同的display的Wind...原创 2018-06-04 11:36:27 · 926 阅读 · 0 评论 -
AMS简单循环Toast
1.sendmessagehandler.sendEmptyMessageDelayed(TOAST, 5*1000);//add by devin2.message处理,10s循环弹窗 case TOAST: String CustomId = getEnvCustomId(); Log.i("SafetyCheck", "handler CHECK_AGA...原创 2018-05-18 16:39:14 · 214 阅读 · 0 评论 -
Android开机速度优化(第三篇)
参考地址:https://www.jianshu.com/p/6dba42c022a9问题描述开机时间相对参考机过慢,大约慢15s左右。Android 系统7.0。问题分析开机问题涉及的层次较多,大致有bootloader-->kernel-->Zygote-->PMS-->AMS-->Launcher可以借助bootchart来分析,也可以直接通过log分析。不幸的...转载 2018-06-22 14:55:32 · 15223 阅读 · 5 评论 -
android.jks生成方法
1.执行sign.sh脚本./keytool-importkeypair -k android.jks -p 111111 -pk8 platform.pk8 -cert platform.x509.pem -alias devinwang./keytool-importkeypair //为下载的签名脚本android.jks //Android studio签名文件-p 11111...原创 2018-06-08 13:51:11 · 3651 阅读 · 0 评论 -
Android源码开发基本命令
1.打印Log//将缓冲区的log打印到屏幕并退出adb logcat -d//清除缓冲区log(testCase运行前可以先清除一下)adb logcat -c//打印缓冲区大小并退出adb logcat -g//输出logadb logcat -f /data/local/tmp/log.txt -n 10 -r 1 //-f log存到文件log.txt -r 1 代...原创 2018-06-08 14:21:37 · 413 阅读 · 0 评论 -
Android P Surfacelingeer启动bootanimation流程
1.surfaceflinger进程启动init启动surfaceflinger.rc的过程可以参考 SurfaceFlinger启动流程分析###xref: /frameworks/native/services/surfaceflinger/surfaceflinger.rcservice surfaceflinger /system/bin/surfaceflinger...原创 2019-08-28 10:25:01 · 661 阅读 · 0 评论 -
Android O 开机动画流程以及制作(c片段和p片段)
线程执行周期1、创建线程时,会sp和wp一次线程本身。 2、如果是第一次执行会运行线程的readyToRun()方法,再执行threadLoop(),否则,直接运行threadLoop()。 3、threadLoop()方法有返回值,如果threadLoop()返回false的时候,线程会做清理工作,然后退出while循环,结束运行。所以在这里,我开始时的疑问—为什么线程Threa...原创 2018-08-22 00:10:07 · 1858 阅读 · 0 评论 -
SurfaceFlinger启动流程分析
init进程启动SurfaceFlinger,代码分析也就从Init.cpp开始1.init.cpp main()int main(int argc, char** argv) { ... am.QueueEventTrigger("early-init"); // Trigger all the boot actions to get us started....原创 2018-08-11 10:01:23 · 1909 阅读 · 0 评论 -
init.rc解析
http://www.360doc.com/content/16/0627/17/8335678_571170766.shtmlhttps://blog.csdn.net/huabinbin110/article/details/13771879原创 2018-07-30 11:03:14 · 224 阅读 · 0 评论 -
Android网络请求框架AsyncHttpClient详解
AsyncHttpClient框架下载地址:http://loopj.com/android-async-http/使用如下,需要使用jar包,import com.loopj.android.http.*; private final String sinaGPS = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=jso...原创 2018-06-20 11:10:27 · 287 阅读 · 0 评论 -
com.android.provision基本介绍
1.com.android.provision ANR(平台android6 mstar芯片 内存1G)1.从device log看,cpu只有30占用排除cpu导致的anr2.anr类型为input dispatching time out 按键无响应3.从trace看,pid 4618主线程处于空闲状态,不像进程本身原因导致的anrE/ActivityManager( 1817): ANR...原创 2018-06-02 16:31:29 · 6272 阅读 · 0 评论 -
SettingsProvider介绍和使用
可以参考地址:https://blog.csdn.net/myfriend0/article/details/59107989#查询数据1.用法//put getandroid.provider.Settings.Global.putInt(context.getContentResolver(), android.provider.Settings.Global.AUTO_TIM...原创 2018-06-02 09:12:13 · 9850 阅读 · 0 评论 -
开机动画(bootanimation)配置
1.压缩命令:zip -0 -r ../bootanimation.zip ./2.制作包格式desc文件:1920 1080 1 -- 1920 1080分辨率 1表示1秒钟播放一帧p 0 0 part0 -- 第一个0,表示一直循环 第二个0,表示播放完后无间隔时间继续播放 part0表示此条是播放part0目录part0文件格式:命名请使用001--0xx之类排序播放...原创 2018-05-17 13:52:00 · 1901 阅读 · 1 评论