自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 Android Studio报错中文乱码

没有studio64.exe.vmoptions的话会弹窗,创建一个即可;原本存在的话,在最下面添加。按两下Shift,查找Edit Custom VM Options并确认;3. Sync Gradle 重新同步一下;

2024-09-13 16:21:30 294

原创 【Android Framewrok】Handler源码解析

Handler用简单的话概括:Looper开启了一个轮询消息队列,不断相对应的Handler进行分发消息的功能,而不同的Handler会对其进行发送消息,将消息塞到Looper的消息队列中。答:可以 / 一种使得异步消息可以被更快处理的机制答: 当MessageQueue为空或者目前没有需要执行的Message时会回调的接口对象。

2024-07-21 17:59:08 1515

原创 【Android性能优化】Android CPU占用率检测原理和优化方向

(1 - 空闲态运行时间/总运行时间) * 100%Hz:Linux核心每隔固定周期会发出timer interrupt (0),HZ是用来定义每一秒有几次timer interrupts。举例来说,HZ为1000,代表每秒有1000次timer interrupts。通过命令,可以查看当前系统的Hz。以某某项目为例,Hz为100。Tick:Tick = 1/Hz,即多久发出一次timer interrupt。以上述情况为例,则为10ms发生一次。

2024-07-19 18:31:17 1368

原创 【Android性能优化】Android性能优化概览

其实笔者做性能优化的经验不算很多,但是每个软件产品或者软件项目在开发时,都会经历性能优化的工作。按照作者的理解,我认为几个字以概括, 快、稳、省。

2024-07-19 18:29:13 380

原创 【Android系统启动】 Android SystemServer 进程启动流程源码解析

中看到, 传递给zygote的参数中, 含有systemserver的包名"com.android.server.SystemServer",通过搜索此包名得知systemserver位置。主要也是负责启动各种服务和应用,通过过滤其中trace,可以看出大概启动了多个service或者manager,部分是根据配置是否启动的。方法进行类似埋点的操作,systemservice会将启动阶段通知到各个服务,各个服务能够根据不同阶段完成自己的一些车初始化工作。从代码中可以看到,启动到不同阶段的时候,会调用。

2024-07-17 16:07:56 1423

原创 【Android系统启动】 Android Zygote 进程启动流程源码解析

在 userdebug 版本中,如果 persist.debug.dalvik.vm.jdwp.enabled 为 1,则所有应用均可使用 JDWP 和 ptrace 进行调试。题外话, 之前找zygote源码的时候,本来想直接通过进程名找这个模块的源码,结果发现根本没有zygote这个名字的命令。通过命令查找到对应的进程目录发现,原来的进程的名字当时编译为。通过上面传下来的参数,“com.android.internal.os.ZygoteInit”,可以得知Java层的包名,以此找到Java代码。

2024-07-17 13:57:03 806

原创 【Android开发技巧】Android系统编译out目录结构

文章为Android系统编译后out目录树结构,系统版本为Android13,以供参考。

2024-07-16 20:29:58 959

原创 【Android开发技巧】如何通过进程找到所在目录?

在开发和排查系统问题的时候,进场会遇到需要找进程所在目录的时候,在此记录一篇笔记。

2024-07-16 20:28:55 361

原创 【Android系统启动】 Android Init 进程启动流程源码解析

第一个阶段,第一个阶段主要做了一些挂载基本文件系统、设置环境变量等的操作,第二阶段则挂在了额外的文件系统,使用epoll实现了一个事件驱动型的功能,加载和执行.rc文件中的命令;在init.rc文件中, on zygote-start的地方, 写了start zygote, start是android内置的命令,在解析rc文件之前就已经将这些方法放到代码中了,命令会执行start方法,将zygote拉起来;PS:代码中epoll的使用和原理还不大懂,后续需要填坑…(哈哈,其实别的也很多不懂)

2024-07-08 20:31:33 825 1

原创 【Android经验技巧】 Android全部系统属性含义(长期更新中...)

Android14所有系统属性含义, 持续更新中...

2024-06-11 19:35:30 1429 1

原创 Android Studio配置离线gradle笔记

我这里放置的在C:/Users/xxx/.gradle/wrapper/dists/gradle-8.7-all.zip。因为最近办公的电脑很卡,但是老是忘记离线配置gradle的操作步骤。因此编写一篇自己的笔记记录。将下载的gradle .zip放到本地目录;

2024-05-06 11:29:23 851

原创 【Android系统启动】 Android Init 语言官网教程及中文翻译

文章根据system/core/init/README.md对Android Init语言进行翻译;下面给出Init语言中文翻译和原文,翻译为机翻和个人翻译综合完成,如有错误欢迎提出纠正。

2024-04-21 04:03:40 1209 1

原创 【Android系统启动】 Kernel启动流程

可以看到kernel启动的时候,进行了许多环境相关的初始化,如引导CPU、设置缓存、安全信息、内存管理、proc等虚拟文件系统初始化等等;这里主要功能包括等待kthreadd线程设置完成、执行内核初始化的可释放部分、完成异步初始化代码、释放初始化内存、最终化内核映射、设置系统状态为运行中等;然后尝试**执行一系列的init命令(二进制可执行文件),直到找到一个可行的初始化命令为止,**如果都失败,则会触发内核panic。在执行之前,打印出了一些要执行的命令和环境变量信息,以便进行调试和跟踪。

2024-04-20 23:14:18 1501

原创 【Android系统启动】 BootLoader - Little Kernel启动流程源码解析

后文中的lk指 Little KernelAndroid启动会经过BootLoader阶段, BootLoader中, 挑选little kernel作为bootloader程序进行源码研究。当然也许多公司使用的是uboot,像作者公司许多项目也是使用uboot。lk官方源码中,没有集成高通、MTK平台的代码, 但是在github开源代码中,能够找到适配高通平台和MTK平台的lk,本文先是基于官方开源代码lk进行总体的分析, 然后对高通平台lk、MTK平台lk的不同部分进行分析;

2024-04-17 01:44:45 1015

原创 Android常用签名方法和签名转换技巧

利用网上开源项目:https://github.com/getfatday/keytool-importkeypair, 使用 keytool-importantkeypair工具, 将platform.pk8和platform.x509.pem 转成platform.keystore;使用命令在linux环境生成platform.keystore即可;生成platform.pem文件 --> 生成platform.p12文件 --> 生成platform.jks文件。

2024-04-16 01:02:25 1162

原创 【Android系统启动】 Android14启动流程概览

作为一个Android开发工程师,了解Android系统从上电到全功能启动的流程,是十分有必要的。这个对排查系统疑难问题、定制系统开发都十分有帮助。因此记录以下系列文章笔记。文章编写与2024年,基于AOSP官网主干代码ARM64b部分学习,按年份计算代码处于Android14~Android15中间。笔者水平有限,如存在谬误,欢迎指出纠正。

2024-04-15 02:08:00 1906

原创 Android9超过2G升级包无法升级问题排查与解决方案

metadata数据中的偏移量与升级包实际的偏移量对不上,这个偏移量其实指的是压缩包内文件数据(payload.bin)在文件(升级包)中的偏移量。系统打包的时候会将这个偏移量解析出来写在metadata中,而update_engine会根据metadata文件中定义的这个偏移量提取payload.bin,并判断payload.bin的前4个字节是不是’CrAU’,如果提取出来的payload.bin的前4个字节与’CrAU’不匹配,则证明偏移量错误,导致提取的payload.bin文件不正确;

2024-04-15 01:53:49 1455 1

原创 进程CPU占用率过高排查流程笔记

可以看到其中占用较高的是线程19303、19307、20072、20058, 该4个线程线程名均有HwBinder,是HwBinder相关的线程。binder和vndbinder使用的是AIDL接口, hwbinder使用的是HIDL接口。在对外提供的接口上,加上binder pid和uid的打印。从top命令查看得知,CPU是8核的处理器, vehicle进程占用约50%, 按百分比计算约占用6%左右。修改、替换后打印logcat日志,得知调用的PID为19915, UID为0,多次调用中基本没有停顿。

2024-04-15 01:19:07 834

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除