![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 76
JerryHe
长期在智能移动设备、汽车智能座舱领域进行研发工作,
参与过多款当下畅销汽车的智能座舱研发工作,目前在一家集AI与智能汽车产品集团从事智能舱驾产品研发工作
展开
-
am start -W 命令详解-可以测量应用启动时间的命令
是一个 Android am命令的参数子集,用于启动应用程序并等待应用程序启动完成。这个命令非常有用,特别是当你需要测量应用程序启动时间或者调试应用程序的启动过程时。原创 2024-07-20 10:17:45 · 643 阅读 · 0 评论 -
am start 命令详解
在 Android 中,am start 命令是一个强大的工具,用于启动应用程序的活动、服务或广播接收器。它是 Android Debug Bridge (ADB) 工具的一部分,允许开发者和测试人员在命令行中启动应用程序的组件、进行调试以及进行测试。本文将详细介绍 am start 命令的使用、参数、进阶技巧和调试方法。原创 2024-07-20 10:09:15 · 809 阅读 · 0 评论 -
Android init.rc各阶段的定义和功能
early-init阶段定义early-init是系统启动的最初阶段,用于完成最基本的系统初始化任务。功能挂载关键分区:如/system/data/vendor。设置基本系统属性。进行一些基础的初始化操作。配置示例# early-init 阶段的任务# 挂载系统分区# 设置基本系统属性触发时机: 在init进程开始运行后立即执行,通常在内核完成启动后最初的阶段。功能总结挂载分区。设置系统属性。基础初始化任务。原创 2024-07-19 14:19:02 · 733 阅读 · 0 评论 -
Android init.rc的启动流程
Android 系统的启动过程分为几个主要阶段,每个阶段负责不同的初始化任务。在 Android 启动时,init程序是第一个运行的用户空间进程。init负责启动系统服务、挂载文件系统、设置权限等任务。init.rc是init程序的配置文件,定义了这些启动任务和服务的详细信息,文件中的指令会按照特定的顺序执行来完成这些任务。原创 2024-07-19 14:02:01 · 772 阅读 · 0 评论 -
Android init 中的wait_for_property指令
指令用于在init.rc文件中等待特定的系统属性达到预期值。系统属性是 Android 操作系统中的一种键值对机制,用于在不同的系统组件之间传递信息。原创 2024-07-18 14:22:48 · 978 阅读 · 0 评论 -
如何识别Android init 中的缓慢操作
在 Android 系统中,init进程负责启动系统服务、配置属性和执行系统初始化任务。识别和优化init进程中的缓慢操作对于提高系统启动性能和整体响应性至关重要。本文档将详细介绍如何识别init中的缓慢操作,提供具体的方法和工具,以及如何解决这些问题。原创 2024-07-18 13:29:37 · 985 阅读 · 0 评论 -
Android开机优化系列文档
Android系统开机优化系列文档,将与开机优化相关的文档收集在这里,便于管理和查看。原创 2024-07-17 17:16:58 · 231 阅读 · 0 评论 -
Android init常用调试工具
高级文件系统调试工具,可以查看和修改文件系统的内容。是 Android 系统中的第一个用户空间进程,负责启动系统服务、设置系统属性和处理启动任务。进程调试工具的详细介绍,包括工具的使用方法、命令示例和应用场景。进程的性能问题和配置问题是提高系统启动效率和可靠性的关键任务。进程中的性能问题,识别缓慢操作的根本原因,并进行相应的优化。是一个命令行工具,用于收集跟踪数据,查看系统和应用的事件。是一个更高级的性能分析工具,提供详细的系统级别的性能数据。是一个用于收集设备状态的工具,可以帮助诊断系统问题。原创 2024-07-17 16:57:32 · 920 阅读 · 0 评论 -
Android init.rc如何并行执行任务
在 Android 系统中,init.rc 是一个重要的启动脚本,用于定义系统启动时需要执行的服务、操作和初始化任务,也是用来配置系统启动时的各种服务、属性和动作的脚本文件。虽然 init.rc 文件本身是一个序列化的配置文件,init.rc 文件中的命令通常按顺序执行,但 Android 的 init 进程和 init.rc 文件中的机制允许一定程度的并行执行任务,通过特定的机制,Android 也支持并行执行 init.rc 中的命令。原创 2024-07-17 14:52:39 · 1055 阅读 · 0 评论 -
Android系统中Launcher应用是被谁启动的
在 Android 系统中,Launcher是一个重要的应用,它负责显示主屏幕、管理应用程序图标和提供启动应用程序的界面。Launcher 是由启动和管理的,具体来说,Launcher 的启动过程涉及多个 Android 系统组件和机制。原创 2024-07-16 16:50:46 · 918 阅读 · 0 评论 -
Android 14 开机时间优化措施汇总
优化Android设备的开机时间是提升用户体验和设备性能的关键任务。以下是针对Android 14开机时间优化的全面措施汇总,包括不同层级的优化策略、工具和方法。原创 2024-07-15 18:00:27 · 643 阅读 · 0 评论 -
Android 14 开机时间优化措施
在Android 14中,优化开机时间涉及多个层级的性能优化,从系统启动到应用加载的每一个阶段都可能影响最终的开机时间。以下是详细的措施和策略,可以帮助我们在Android 14设备上进行开机时间优化。原创 2024-07-15 17:55:56 · 1345 阅读 · 0 评论 -
根据systrace报告优化系统时需要关注的指标和优化策略
在优化系统时,systrace是一个非常有用的工具,它可以帮助开发人员分析和优化系统性能。systrace。原创 2024-07-14 22:53:38 · 236 阅读 · 0 评论 -
Android系统上常见的性能优化工具
这些工具可以开发人员更全面、深入地理解和优化 Android 应用的性能。原创 2024-07-14 22:49:45 · 437 阅读 · 0 评论 -
分析 Android 应用中的日志信息应遵循的原则
用于记录大量的调试信息,通常在开发过程中使用,以便全面了解应用的内部运行情况。但在发布的应用中一般不建议保留大量的。通过以上方法,可以更有效地从 Android 应用的日志中提取有价值的信息,帮助我们解决问题、优化应用性能和改进功能。这表示可能存在潜在的问题或需要关注的情况,但应用还能继续运行。在实际开发中,根据不同的场景和需求选择合适的日志级别,可以更有效地进行调试和监控应用的运行状况。稍微简洁一些,主要用于帮助开发人员在调试阶段跟踪应用的流程和变量值等。级别的日志来提供基本的运行信息。原创 2024-07-14 22:40:31 · 300 阅读 · 0 评论 -
在 Android 应用中使用日志记录功能应遵循的原则
在 Android 中考虑使用一些成熟的日志框架,如 Logback、Log4j 等,它们提供了更强大的功能和配置选项。为每个日志消息设置一个独特且有描述性的标签,以便于在查看日志时快速区分不同模块或功能的输出。使日志消息清晰、简洁,并包含足够的上下文信息,以便在出现问题时能够快速理解。特别是在测试和出现问题时,通过查看日志来发现和解决潜在的问题。不要在日志中包含用户的个人身份信息、密码或其他敏感数据。避免过度记录日志,以免影响应用性能和占用过多的存储空间。如前所述,在发布的生产版本中,通常只保留关键的。原创 2024-07-14 22:32:39 · 134 阅读 · 0 评论 -
Android上如何使用perfetto分析systrace
可以编写 Python 脚本来解析和分析 Perfetto trace 数据。Perfetto 提供了 Python API 进行更深层次的数据处理。示例:使用 Perfetto 分析 Systrace 数据。原创 2024-07-11 16:57:48 · 1107 阅读 · 1 评论 -
Android系统设置kernel log level的方法
kernel log内容过多/过少会影响分析问题,各种系统的版本对kernel log的等级要求也不一样,因此需要对kernel log进行设置。原创 2024-07-11 16:39:59 · 934 阅读 · 0 评论 -
Android系统通过属性设置来控制log输出的方案
编译后的版本,就可以根据需要通过以下两个属性,对AccessibilityCache.java和GnssLocationProvider.java文件中的log进行输出控制。2、可以在系统中任意的rc文件中添加属性配置,这里我们选择system/core/logcat/logcatd.rc文件。由于该属性不能直接进行保存,所以,需要进行转接,通过persist属性进行控制。1、通过Log.isLoggable控制的log属性标签。在其中对log.*属性和persist.*属性进行关联。原创 2024-07-10 19:02:09 · 526 阅读 · 0 评论 -
Android14系统应用统一裁剪方案
当前移除集成到系统里的应用,一般都是根据应用名,到各个mk文件里逐个在PRODUCT_PACKAGES中删除;参考PRODUCT_PACKAGES变量,添加PRODUCT_DEL_PACKAGES变量,用来管理裁剪掉的应用。新增一行_product_single_value_vars += PRODUCT_DEL_PACKAGES。裁剪掉EasterEgg,然后进行编译,完成后,在out中查找不到EasterEgg相关生成物。一般编辑的文件路径为device/公司名/产品名/device.mk。原创 2024-07-10 17:05:36 · 1109 阅读 · 0 评论 -
使用ADB命令控制logcat日志本地存储功能
因此对于无法进入工程模式GUI界面的场景需要一种方式,在不进行界面操作或切换 USB mode的情况下,也能启用 logcat 日志的本地存储。使用GUI界面的工程模式/开发者选项可以打开 logcat 日志的本地存储功能,从而可以很方便的抓取完整的开机日志。这种命名很相似的属性,他们的什么区别和联系,可以从代码中关于各属性的描述进程查看。在命令行环境下,通过直接修改下列属性值,就可以打开/关闭 logcat 日志本地存储功能。这个属性进行了重新定义造成的,可搜索这个属性在代码中的位置,跟踪分析原因。原创 2024-07-09 19:25:12 · 1320 阅读 · 0 评论 -
Android多用户基础问题
将用户添加到设备后,当另一个用户位于前台时,某些功能会受到限制。由于应用程序数据是按用户分开的,因此这些应用程序的状态因用户而异。例如,发送至当前未关注的用户帐户的电子邮件将不可用,直到该用户和帐户在设备上处于活动状态。此外,如果设备需要额外的内存用于前台用户的操作,系统进程将停止后台辅助用户。默认情况下,退出访客模式时,访客用户会话中的信息不会保留。(用户 ID = 0)身份运行,而不管当前用户是哪个用户。因此,取决于用户的设备路径(如。管理员用户可以删除应用程序,甚至可以删除辅助用户建立的整个工作区。原创 2024-07-08 17:27:19 · 976 阅读 · 0 评论 -
Android多用户adb命令
profileOf userId:可选参数,用于指定新用户的配置文件。新用户将会继承指定用户的配置文件。如果不提供此参数,则新用户将拥有默认的配置文件。–managed:可选参数,指定新用户是否是受管理的。如果提供了此参数,则新用户将是受管理的,否则将是普通用户。为特定用户列出软件包(-e 可列出已启用的软件包,-d 可列出已停用的软件包)。默认情况下,此命令始终为系统用户列出软件包。adb shell操作多用户的命令如下。获取当前(前台)用户 ID。安装应用到某个用户下。为特定用户卸载软件包。原创 2024-07-08 17:25:32 · 711 阅读 · 0 评论 -
Android Studio Run窗口中文乱码解决办法
依次打开菜单:Help--Edit Custom VM Options,打开studio64.exe.vmoptions编辑框(如果没有该文件,请按照提示自动创建即可)在studio64.exe.vmoptions中添加 -Dfile.encoding=UTF-8。shift 按键多次出发,在其中输入vmoptions,打开编辑。重启AndroidStudio。原创 2024-07-06 21:49:54 · 203 阅读 · 0 评论 -
内存对齐宏ALIGN的理解
在Android相机HAL代码中经常看到ALIGN这个宏,主要用来进行内存对齐,下面是v4l2_wrapper.cpp中ALIGN的一些定义。在函数中,出现 ALIGN的地方,用后面的((size + align - 1) & (~(align - 1)))代替!现在要分配一个内存空间,从0地址开始,size为需要占据的字节大小,按照align个字节对齐,则结束地址应该为多少。ALIGN(15, 4),就应该等于16,我们计算一下,会发现确实等于16。就是定义一个常量函数常量ALIGN。原创 2024-07-06 21:36:46 · 320 阅读 · 0 评论 -
Android Camera API发展历程
Android系统中Camera API是用于控制相机设备的主要API,到目前为止,Camera API历史上共历经了三版重要的API。在Android 5.0之前,主要使用的是Camera API1,但现在已经弃用。从Android 5.0开始,Google推荐使用Camera2 API。在更高版本的Android中,CameraX API被引入,它是基于Camera 2 API的封装,进一步简化了开发流程,并增加了生命周期控制。原创 2024-07-05 15:47:06 · 1204 阅读 · 0 评论 -
Android系统开启Docker支持
第8步:运行Moby检查脚本,查看CONFIG状态,若CONFIG项没有missing,则表示当前kernel已支持docker, 若仍有显示missing的项,则需重复第4步开始的操作,直至所有CONFIG项没有missing.第3步:运行Moby检查脚本,检查内核缺失项配置参数,查看CONFIG状态,显示missing的配置项,即为缺失的功能。具体参考如下:---在我们当前项目代码里需要验证。----原因:到6.1.9版本,仍未进入Linux主线内核,所以这些参数是开不了的。原创 2024-07-05 15:34:44 · 431 阅读 · 0 评论 -
Android文件路径获取
在Android中获取文件路径的几种方法,包括获取应用的私有文件路径、缓存文件路径、SD卡的根目录路径,以及特定类型和特定应用的外部存储目录路径。而要操作文件,首先需要获取文件的路径。除了获取SD卡的根目录路径外,还可以获取特定类型的外部存储目录路径,比如公共图片目录、公共音频目录等。在Android中,每个应用都有自己的私有文件路径,其他应用无法直接访问这些文件。除了私有文件路径,应用还可以使用缓存文件路径来存放临时文件或缓存文件。有时候我们需要将文件存放在特定应用的外部存储目录中,可以使用。原创 2024-07-04 10:48:19 · 1142 阅读 · 1 评论 -
Android各种存储路径的比较
到这个目录的时候,用相对路径。需要注意的是,这个文件的目录和应用的存储位置有关, 当应用被移动到外部存储设备的时候,文件的绝对路径也是变化的,所以建议当。应用外部存储空间(数据文件非私有,可以被手机的系统程序访问(如MP3格式的文件,会被手机系统检索出来),同样,该目录下的文件,所有的APP程序也都是可以访问的,)应用外部存储空间(数据文件非私有,可以被手机的系统程序访问(如MP3格式的文件,会被手机系统检索出来),同样,该目录下的文件,所有的APP程序也都是可以访问的,)原创 2024-07-03 19:02:29 · 783 阅读 · 0 评论 -
Android存储权限梳理及api接口调用
Android系统的文件存储按存储介质类型分为内部存储和外部存储,按存储目录类型分为私有目录和公共目录;对于Android系统中的进程来说,如果需要存储空间,需要按需申请对应的权限才能访问;否则是不能达到目的的。开发中经常会进行文件存储,可以根据具体需求,选择合适的方案对文件进行存储,参考如下:当需要存储一些私密性和安全性比较高的小数据,例如用户的账号密码等信息,可以存放在内部存储空间上。原创 2024-07-03 18:57:31 · 1066 阅读 · 1 评论 -
Android 常用文件系统命令
当系统正在对某个文件系统的区域进行写入操作时(读的话没关系),突然断电,会造成文件系统对应区域的损坏(如写入脏数据), 而e2fsck算法就是用来恢复受损的文件系统,目的是:系统能够重启后,一切正常。当然,有损坏,想原样修复,当然不能100%保证,所以,就遇到了某些系统文件丢失,或者文件属性发生变化的事情。文件损坏会报错structure needs cleaning(结构需要清理)。Android车机系统的重启,默认是从通过QNX直接给Android掉电,没有走Android的正常重启流程;原创 2024-07-02 13:36:35 · 436 阅读 · 0 评论 -
Android system.img挂载和解除挂载
system.img、vendor.img 都存在两种格式raw,sparse ,在ubuntu命令窗口下执行下执行:file system.img可以查看文件的信息。一种是raw ext4 image,即经常说的raw image。使用file观察它: 其特点是完整的ext4分区镜像(包含很多全零的无效填充区),可以直接使用mount进行挂载,因此比较大(一般1G左右)。file 查看另一种是sparse ext4 image,即经常说的simg就是说是一个非常普通的dat文件。原创 2024-07-01 20:06:11 · 461 阅读 · 0 评论 -
Android super.img结构及解包和重新组包
Android10开始使用动态分区,system、vendor、 odm等都包含在super.img里面,编译后的最终镜像不再有这些单独的 image,取而代之的是一个总的 super.img.原创 2024-07-01 19:49:45 · 1090 阅读 · 0 评论 -
使用 audit2allow 工具添加SELinux权限的方法
audit2allow 命令的作用是分析日志,并提供允许的建议规则或拒绝的建议规则。原创 2024-06-26 14:21:21 · 882 阅读 · 0 评论 -
Android Camera API和HAL版本对应关系
不同API和HAL版本直接调用可简单总结为以下几点: API1 -> HAL1, 原始Camera流程, CameraService中使用的Client为API1 -> HAL3, 兼容使用API1的应用, CameraService中使用的Client为API2 -> HAL1, 底层只支持HAL1, 为了兼容API2应用, 通过Framework层将API2转为API1实现 API2 -> HAL3, 目前主流方式, 提供更好的Camera控制能力, CameraService使用的Client为。原创 2024-06-12 18:32:01 · 863 阅读 · 0 评论 -
Android Camera APP预览画面镜像及旋转处理
Android Camera APP开发调试中经常会遇到预览画面镜像或者旋转处理。网上可以找到很多种方案,本文介绍最简单的实现方案,来达到镜像预览画面和画面旋转的效果。原创 2024-06-05 15:45:48 · 489 阅读 · 1 评论 -
Android R及以上版本中APP外部存储实现
从 Android R开始,Google 引入了一些新的限制,以增强用户数据的隐私保护。其中之一是对外部存储的访问限制。如果APP的target>30,之前的WRITE_EXTERNAL_STORAGE/READ_EXTERNAL_STORAGE授权方案就完全不能使用了。本文将说明如何在 Android R及以上版本中实现外部存储空间的读写。原创 2024-06-03 10:17:19 · 629 阅读 · 1 评论 -
Android Studio的Beta, Canary, Dev, Stable四种版本介绍
Android Studio在更新版本时,会有让选择升级源,如下:默认情况下选择的是Stable Channel这几个Channel的版本是有一些差异的;在Android Studio下载官网上,有如下介绍:`Android Studio's built-in update mechanism can be set to receive updates thro...原创 2020-04-28 00:00:15 · 1485 阅读 · 1 评论 -
Ubuntu下adb的使用及常见问题处理
一、如何使用adb1、adb工具的安装方案一:使用ubuntu系统自带的安装包sudo apt-get install android-tools-adb或者sudo apt-get install adb方案二:使用Android源码编译生成的adb文件Android源码编译完成之后,会在编译过的项目目录下./out/host/linux-x86/bin/生成adb...原创 2019-12-17 15:38:11 · 2413 阅读 · 1 评论 -
Android核心模块
Android作为一个移动设备的平台,其软件层次结构包括了一个操作系统(OS),中间件(MiddleWare)和应用程序(Application)。根据Android的软件框图,其软件层次结构自下而上分为以下几个层次:第一、操作系统层(OS)第二、各种库(Libraries)和Android 运行环境(RunTime)第三、应用程序框架(Application Framework)第四、应用程原创 2009-12-04 10:45:00 · 2395 阅读 · 1 评论