- 博客(397)
- 资源 (16)
- 收藏
- 关注
原创 Android进程启动流程
系统启动流程中的一个关键的步骤,作为第一个进程,它被赋予了很多极其重要的工作职责,比如创建。这层中包含了支持整个系统正常运行的基础库,由于这些库多数都由。系统中非常重要,系统里面的服务都是在这个进程里面开启的,例如。设置的应用程序,如果这两个目录都找不到,就依次去根目录下找。,只要这些应用程序有一个启动了,其他就不需启动了。系统库、虚拟机运行环境、框架层组成,通过系统调用。另一方面也囊括了不少系统级服务进程的实现,是与。进程负责创建系统中最关键的几个子进程,尤其是。协议,意味着其下的所有驱动都应该开源,
2022-12-15 16:18:06 1311
原创 Android进程启动流程
但整体架构设计清晰。Android 底层内核空间以 Linux Kernel 作为基石,上层用户空间由 Native系统库、虚拟机运行环境、框架层组成,通过系统调用(Syscall)连通系统的内核空间 与 用户空间。对于用户空间主要采用 C++ 和 Java 代码编写,通过 JNI 技术打通用户空间的 Java层 和 Native层(C++/C),从而连通整个系统。这层中包含了支持整个系统正常运行的基础库,由于这些库多数都由C/C++实现,因此也被一些开发人员成为“C库层”,以区别于应用程序框架层。
2022-11-25 16:37:51 515
原创 dumpstate log总结
先从总体上了解dumpstate的结构,以至于不会迷失在log海当中.这个界面的代码在android\vendor\samsung\packages\apps\MSP\FactoryTest\ServiceModeApp\src\com\sec\android\app\servicemodeapp\app\SysDump.java。Log源码在android\frameworks\base\core\java\android\util\Log.java,看Log.i的实现。
2022-11-04 15:02:19 1547
原创 Android系统MK文件分析
说明:必须定义, 在app或package的Android.mk中必须给定值。可选定义,在app或package的Android.mk中可以也可以不给定值。不用定义,在app或package的Android.mk中不要给定值,脚本自动指定值。
2022-10-26 11:36:46 271
原创 安卓温升thermal介绍
Linux kernel有个通用的思想就是抽象分层,比如把该子系统所有资源和信息综合在一起的一层叫core层,不同的设备的操作叫device层,对设备的操作的屏蔽层叫driver层或者governor。thermal sensor驱动负责读取硬件温度sensor的温度,并传给thermal 子系统,thermal子系统将根据调控对象的温度,决定是否触发对应的冷却措施,如限制CPU最大工作频率,以及CPU打开的核数等,从而实现对系统的冷却。当然附带的也会产生一些使用温度控制设备的策略。
2022-10-21 11:01:26 1960
原创 MTK上传大文件
6.分三步,上传完毕后,在Shared history里面找到上传的那条,把 request id发给mtk即可。4.点击 Shared file。1.登录online。
2022-10-19 13:49:56 205
原创 Systrace抓取
Trace的X轴表示时间,Y轴以进程进行分组,进程组内是各个线程,可以收缩和展开。每个应用进程包含每个线程所包含的所有跟踪标记,包括基于启用跟踪类别的高级跟踪事件的层次结构。打开谷歌浏览器, 在Chrome浏览器的地址栏中输入 chrome://tracing,点击Load选择需要的trace文件即可。使用使用android自带的抓取trace的方法,这种方法适用于抓取长trace,最长支持30分钟,但是可能会影响性能。d.下拉状态栏点击“系统跟踪”图块,即可开始抓取,再次点击图块即可停止抓取;
2022-09-26 16:47:52 2627
原创 应用启动& 应用启动优化
一、了解冷热启动当启动应用时,后台没有该应用的进程(常见如:进程被杀、首次启动等),这时系统会重新创建一个新的进程分配给该应用。App进程存在,并且Activity对象仍然存在内存中没有被回收。可以重复避免对象初始化,布局解析绘制。场景就类似你打开微信聊了一会天这时候出去看了下日历在打开微信微信这时候启动就属于热启动。二、掌握应用启动流程在冷启动开始时,系统有三个任务。这三个任务是:1.创建应用进程。2.加载并启动应用。3.在启动后立即显示应用的空白启动窗口然后显示Activity。
2022-09-19 16:57:07 806
原创 Linux创建可执行脚本
是指此脚本使用/bin/bash来解释执行。是一个特殊的表示符,后面紧跟着解释此脚本的shell路径。bash只是shell的一种,还有很多其它shell,比如:sh,csh,ksh,tcsh等等。有时我们在Linux系统下要执行很多命令,我们可以将它写入到脚本当中,一次性执行玩成,省去许多手动录入的繁琐;所以,当source命令执行有问题时,bash继续执行下面命令。注:当source命令执行有问题时,bash继续执行下面命令。注:当source命令执行有问题时,sh不再往下面执行。
2022-09-09 13:59:56 1623
原创 乌班图分享文件夹
接下来,如果想让访问的用户能在共享的文件夹下创建和删除文件夹,请选中。a、 如果允许匿名访问这个文件夹请勾选“在文件夹共享设置窗格中,选中“”按钮以共享文件夹。
2022-08-18 11:32:12 568
原创 自定义View属性defStyleAttr与defStyleRes详解
defStyleAttr:这个是当前Theme中的一个attribute,是指向style的一个引用,当在layout xml中和style中都没有为View指定属性时,会从Theme中这个attribute指向的Style中查找相应的属性值,这就是defStyle的意思,如果没有指定属性值,就用这个值,所以是默认值,但这个attribute要在Theme中指定,且是指向一个Style的引用,如果这个参数传入0表示不向Theme中搜索默认值。应用属性的时候也需要注意属性的namespace。...
2022-08-15 17:12:48 690
原创 Fastboot刷机
讲到这里,我想说的是,既然recovery是一个小型操作系统并且有手机这样现成的设备,我们可以基于它做些有趣的事,比如移植网络协议及无线网络连接逻辑,然后开发一个命令行版的新浪微博客户端,这样就可以用自己改造的系统发微博了。BootLoader既然要做硬件初始化之类的,必然和硬件相关,所以它的代码并非通用的,不同的硬件需要不同的BootLoader代码,各大厂商可能都有自己的,并且加入开机画面之类的。这里要说的是,内核还没有加载,所以更谈不上多进程任务调度之类的概念,机器只是在顺序执行一条条的指令。....
2022-07-25 15:02:13 18151 1
原创 Vim详解
3.打开文件定位到指定行vimfilename+n比如想到第65行,输入vimfilename+65或者vim+65filename。2.命令模式下(没有输入i进行编辑前),ngg比如想到第86行,输入"86gg"或"86G"(这个不用按回车就直接定位到对应行了)1.命令模式下(没有输入i进行编辑前),n比如想到第65行,输入"65"按回车即可定位到65行。vim快速定位到某一行的几种方法和显示行号,定位匹配字符串,显示当前行信息的命令。......
2022-07-16 14:27:38 5320
原创 Ubuntu卸载软件相关命令
dpkg -ldpkg -l | grep xxx # xxx为软件名称,例如 virtualboxdpkg-query -l *package-name* 例如 virtualboxdpkg -s package-name 例如 virtualboxdpkg --get-selections | grep virtualboxdpkg -L package-name ,例如 virtualboxsudo apt-get --purge remove xxx # xxx为软件名称,
2022-06-02 16:00:28 10343 1
原创 grep详解
最常用的就是和管道符结合,例如:ps -ef | grep dockergrep的语法格式:grep -option(参数) ‘word’(关键词) file(文本文件)grep参数:-a 不要忽略二进制数据。-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。-c 计算符合范本样式的列数。-C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该.
2022-05-23 17:30:13 2272
原创 通过国家码切换默认输入法
/frameworks/base/packages/SettingsProvider/res/values/defaults.xmlomron输入法:<string name="default_input_method" translatable="false">jp.co.omronsoft.iwnnime.ml/.standardcommon.IWnnLanguageSwitcher</string>搜狗输入法:com.sohu.inputmethod.sogou/.
2022-05-20 16:48:44 529
原创 Ubuntu下如何用命令行运行deb安装包
安装sudo dpkg -i xxxx.deb #安装xxxx.deb软件包(其中-i等价于--install)卸载sudo dpkg -r xxxx #卸载xxxx软件包(软件名称可通过dpkg -I命令查看,其中-r等价于--remove)安装TeamViewer为例sudo dpkg -i teamviewer_15.29.4_amd64.deb报错如下:缺少依赖执行如下两步sudo apt --fix-broken install 一般是使用dpkg安装软件出现依赖或..
2022-05-17 10:52:14 6413
原创 ANR分析
1.什么是ANRANR即Application Not Responding,顾名思义就是应用程序无响应。在Android中,一般情况下,四大组件均是工作在主线程中的,Android中的Activity Manager和Window Manager会随时监控应用程序的响应情况,如果因为一些耗时操作(网络请求或者IO操作)造成主线程阻塞一定时间,那么系统就会显示ANR对话框提示用户对应的应用处于无响应状态。2.为什么会发生ANR一句话总结:主线程没有在规定的时间内,做完要做的事情,就会发生ANR。
2022-05-06 10:36:26 2460
原创 getprop 属性
使用adb shell getprop就可以从系统的各种配置文件中读取信息并把所有的信息都打印出来。而使用setprop命令就可以进行相对应的设置。adb shell getprop 查看机器的全部信息参数getprop net.eth0.dns1或者getprop net.eth0.dns2 查看DNSgetprop ro.serialno 查看机器的SN号getprop ro.carrier 查看机器的CID号getprop ro.hardware 查看机器板子代号...
2022-04-21 14:45:37 2111 1
原创 安卓耗电量测试
1.无线连接手机adb connect 192.168.1.82.清楚已有的耗电量数据adb shell dumpsys batterystats --enable full-wake-history3.设备耗电量数据重置adb shell dumpsys batterystats --reset4.寻找包名的uidadb shell ps |find "com.nuomi"以下是dos下出来的信息,u0_a445就是uid,需要去除下划线_, 即u0a445u0_a4.
2022-04-18 11:09:56 331
原创 Hierachy View使用
此文章主要是通过Hierarchy View来了解statusbar的具体结构体系一.如何打开Hierachy View首先在SDK/Tools文件夹下打开Monitor,按照如下操作打开Hierachy View。 StatusBarWindowView:状态栏根布局StatusBarWindowView继承了FrameLayout布局1)重写了onApplyWindowInsets(WindowInsets windowInsets)方法WindowI...
2022-04-15 11:35:27 534
原创 WMS白屏问题
找关键字:WindowManager根据log显示,是systemui.ImageWallpaper转态栏没有移除,导致桌面有一层白色图层,当点击桌面的时候,实际是点击systemui.ImageWallpaper,所以无响应.在设备白屏的时候抓取如下log:adb shell dumpsys window > Desktop\window.txtadb shell dumpsys SurfaceFlinger > Desktop\SurfaceFlinger.txt...
2022-03-30 17:13:18 275
原创 安卓系统开发笔记(三)
1.去除暗黑反色问题方法:DarkIconDispatcherImpl(applyDarkIntensity)StatusBarIconView(onDarkChanged)类:NotificationIconContainer(通知的管理类)statusbar\phone\StatusBarIconController.java(TintedIconManager/onIconAdded)(1)frameworks/base/services/core/java/com/a
2022-03-28 15:29:30 3205
原创 系统强制竖屏
关键方法相关链接:Android4.1 Rotation 小结_tianruxishui的专栏-CSDN博客_android:rotation案例分析在连接特定WIFI的情况下强制竖屏显示WifiNetworkDetailsFragment2.java WifiSettings2.java导包:import com.android.internal.view.RotationPolicy;在两个方法加入以下条件onResume()boolean locked = ...
2022-03-14 14:07:03 3131
原创 SystemUI锁屏界面
SystemUI启动的时候启动各个SERVICE,这些Service不是四大组件的service,这个SERVICE继承SystemUI,实现了start()和onBootComplete方法.其中StatusBar加载了SystemUI几乎全部的界面,其中包括锁屏界面, 其中Bouncer是安全锁屏界面,实现类是KeyguardBouncer.锁屏加载KeyguardBouncer过程:(1)SystemUIApplication启动Statusbar,这里通过createAndAddWind
2022-03-09 14:21:36 899 1
原创 Git Reset三种形式
git reset --soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可;git reset --hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉git reset 分为三种:软 --soft,中 ---mixed,硬 --hard 对应着三种回滚的程度,程度越硬,回滚的越“狠”总结1. --soft 已 add,但尚未 commit2. --mixed(git.
2022-02-15 13:50:22 4436
原创 修改日期时区-区域选项
相关类:TimeZoneSettings需要修改的资源如:icu4c/source/data/region/zh.txtzh-CHS 是单纯的简体中文。zh-CHT 是单纯的繁体中文。zh-Hans和zh-CHS相同相对应。zh-Hant和zh-CHT相同相对应。以上时zh-CHS/zh-Hans 和 zh-CHT/zh-Hant的关系。zh-CN 简体中文,中华人民共和国zh-HK 繁体中文,香港特别行政区zh-MO 繁体中文,澳门特别行政区-zh-S.
2022-02-11 16:46:13 1271
原创 状态栏定制化开发
1.状态栏头部framelayout:status_bar_container phoneStatusBarView:status_bar LinearLayout:status_bar_contens AlphaOptimizedLinearLayout:system_icon_area系统icon布局:system_icons下拉QS界面时状态栏界面:com.android.systemui:id/content设置界面:android:id/statusBarBackground...
2022-01-29 14:38:43 2714
原创 通知栏定制化开发
关键类:NotificationManger NotificationManagerService EnqueueNotificationRunnable PostNotificationRunnable的处理 NotificationListenersNotificationManger:1)对smallicon的非空检验(Build.VERSION_CODES.LOLLIPOP_MR1以上版本),校验不通过报IllegalArgumentException("Invalid noti...
2022-01-22 11:59:25 2106 1
原创 Launcher Go布局客制化
Launcher是安卓系统中的桌面启动器,安卓系统的桌面UI统称为Launcher。Launcher是安卓系统中的主要程序组件之一,安卓系统中如果没有Launcher就无法启动安卓桌面布局配置布局配置文件路径:Go 版本:Launcher3\go\res\xml\device_profiles.xml非 Go 版本:Launcher3\res\xml\device_profiles.xml配置文件中定义了不同分辨率对应的 grid-option 和 display-option 标签
2022-01-18 13:52:52 2827
原创 安卓系统开发笔记(二)
1.查看ClientID的命令adb shell getprop ro.com.google.clientidbaseadb shell getprop |findstr ro.com.google.clientidbase2.查看亮屏问题关键词:sysui_status_bar_state screen_toggled onAuthenticated keyguardGoingAway方法:sysui_status_bar_state(state|1,keyguardShowing|1...
2022-01-06 19:28:26 2876
原创 SystemUI自定义电池图标
1.大致浏览了状态栏介绍,明白了大致的结构StatusBarWindowView(根布局)包含三种形式的界面:收缩形式 展开形式 安全锁界面形式2、大概的了解视图3、状态栏功能 显示功能图标,告诉用户基本的信息状态4、状态栏的启动过程收缩形式的界面status_bar1)StatusBarWindowView(根布局)2)BatteryMeterView包含了电量的图标和电量百分比。布局文件是在/m7/vendor/mediatek/propri..
2021-12-06 15:24:59 1190
原创 SystemUi状态栏客制化功能和常见问题分析
一.多图标成点当系统图标区域或者通知图标区域图标过多,而区域不够时,就会将多余的图标隐藏,并显示一个点,如下图所示。介绍此功能之前先看一下图标的初始化过程,从中可以看到有个config_statusBarIcons参数,这个参数定义了所有的系统图标由低到高显示优先级顺序。点图标是通过设置图标的状态为STATE_DOT来实现的,在状态更新后会 applyToView,然后在图标类中setVisibleState来刷新图标,大致流程如下图所示。二.图标反色我们可以看到当状态栏背.
2021-12-04 15:50:17 2927
原创 SystemUi状态栏主要控件
一.运营商信息控件运营商的控件有两个,一个是锁屏下显示的CarrierText,一个是解锁下显示的OperatorNameView。解锁状态下的OperatorNameView默认显示为空,只有当插入sim卡,并检测到sim卡状态已经准备好后才会显示运营商信息,具体控制是由KeyguardupdateMonitorCallback监听sim状态变化执行updateText方法进行更新信息;锁屏下的运营商信息显示由CarrierTextController控制,通过KeyguardUpdateMonito
2021-12-03 14:21:09 1159
原创 SystemUI状态栏形式及流程
一.状态栏形式1.1锁屏状态栏锁屏状态栏是只有用户设置了锁屏方式为滑动或其他安全锁时才会显示,锁屏方式设置为“无”时不会显示,其显示是伴随着锁屏界面的,也就是只有按下power键或者自动息屏后才会显示。其显示逻辑是在NotificationPanelView来控制的案例一:区域1为keyguard_carrier_text 区域2为cutout_space_view区域3为system_icons_container主要布局文件是frameworks\base\packa
2021-12-02 14:55:08 2191
原创 SystemUi通知栏
视图通知图标显示分析:如上所述,所有的通知信息保存在了自定义view NotificationStackScrollLayout中,每个通知又被封装进了ExpandableNotificationRow中,其中主要保存信息内容的对象又是NotificationContentView,所以后续分析会涉及到这三个自定义view。在SystemUI进程中对notification的处理流程如下:源码分析关键信息类2. 获取Notificati...
2021-12-01 15:18:54 2561
原创 Log日志种类区分
Android系统完整的日志文件目录:/data/log/android_logs/系统或者APP发生ANR时的log日志文件目录:/data/anrC/C++代码发生崩溃时的日志文件目录: /data/tombstones 存各种APP崩溃、ANR、Android系统死机、重启、C/C++模块崩溃等场景的日志文件目录:/data/system/dropbox 存放Watchdog: Android 的 SystemServer 是一个非常复杂的进程,里面运行的服务超过五十种,是最可能出问题
2021-11-25 15:13:28 2200
IjkPlayerView源码以及androidx依赖包
2020-11-09
Charles.zip
2019-10-08
SecureCRT&SecureFX; Portable
2019-01-18
QQ登录依赖的jar包
2018-06-09
Picasso jar包
2017-12-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人