- 博客(44)
- 收藏
- 关注
原创 【车载Android】模拟Android系统的高负载环境
Stress是一个功能强大的Linux压力测试工具,专门设计用于模拟高负载条件下的系统环境。它能够对系统的关键组件,如CPU内存输入/输出操作和磁盘驱动器,施加压力,以评估它们在极端负载下的表现。通过执行stress命令,可以精确地模拟各种资源的消耗模式,从而测试系统和应用在面对高并发任务和复杂运算时的稳定性和性能。
2024-04-22 15:06:04
1085
原创 车载Android应用开发与分析 - 初试 SystemUI Plugin
本文初试了SystemUI插件机制,在编写本文时发现Plugin相关的资料少的可怜,即使是官方资料有的也过时了。所以就像标题那样,本文只是简单尝试了Plugin,如何使用Plugin来详细定制一个完全符合我们需求的SystemUI呢?这个我们放到以后再写,因为接下来需要先来分析SystemUI Plugin的原理,在资料如此稀少的情况下,不了解原理几乎无法写出符合需求的Plugin。在分析的原理的过程中,我们会逐步补完、理解一些Plugin的概念。参考资料SystemUI Plugin 简介及使用。
2023-09-13 10:09:07
1899
1
原创 【性能优化】使用Perfetto定位应用启动性能的瓶颈
Perfetto是Android 10 引入的系统级跟踪工具,支持Android,Linux和Chrome,用于取代Systrace。相比于Profiler和AGI,它不再局限于应用内,而是可以提供整个系统的运行状态,当我们需要查看应用有没有影响到系统的稳定性和流畅性时,或者反过来用于分析系统对应用运行的影响时,就可以使用Perfetto来进行系统级跟踪和分析。
2023-08-24 09:48:44
1385
1
原创 【车载性能优化】将线程&进程运行在期望的CPU核心上
车载Android应用开发中,可能会出现一种奇葩的要求:与用户交互时应用需要全速运行,保证交互的流畅性,但是如果应用进入后台就需要怠速运行,让出更多的资源保证系统或前台应用的流畅度。
2023-07-22 13:54:01
1971
6
原创 【车载Android】多用户(一) - Linux用户与Android多用户
Android是一个基于Linux内核的操作系统,它支持多用户模式,即可以在同一台设备上创建多个用户账户,每个用户都有自己的应用、数据和设置。这样可以保护用户的隐私,也可以方便不同的使用场景。但是,Android的多用户机制并不完全等同于Linux的用户组机制,它们之间依然有较大的差异
2023-07-12 11:20:35
2295
2
原创 车载Android应用开发与分析 - SystemUI 「功能」与「源码结构」分析
在Android系统中SystemUI是一个系统级的APP,它提供了系统的用户界面,由进程启动。SystemUI本身不属于进程,它是一个独立的进程。它的HMI包括了状态栏、导航栏、通知栏、锁屏、近期任务等等。SystemServer是一个由Zogyte进程启动的程序,它负责启动和管理Android系统中的各种核心服务。
2023-07-07 09:34:01
3038
1
原创 【书评】一本Android系统性能优化的新书
Android性能优化,是一个合格的Android程序员必备的技能,现如今几乎所有的Android面试内容都会或多或少涉及性能优化方面的话题。学习Android性能优化可以让我们在简历上展示自己的专业技能和项目经验,证明自己具备高效开发和优化Android应用的能力,从而增加自己在求职市场上的竞争力。那么今天推荐一本Android系统性能优化的新书 -。
2023-07-02 11:57:26
917
4
原创 【视频文稿】车载Android应用开发与分析 - AIDL实践与封装(下)
本期视频我们介绍了车载Android开发中最常用的跨进程通信方式-AIDL,当然除此以外还有也较为常用,总得来说AIDL有以下优缺点:可以实现跨进程通信,让不同应用之间可以共享数据和功能可以处理多线程并发请求,提高效率和性能可以自定义传输实例,灵活性高使用过程比较复杂,需要创建多个文件和类传输数据有限制,只能使用AIDL支持的数据类型传输数据有开销,需要进行序列化和反序列化操作通过近期这五节视频,我们基本就已经介绍完车载应用开发的全部基础技术要求了。
2023-07-01 18:23:36
524
原创 【视频文稿】车载Android应用开发与分析 - AIDL实践与封装(上)
AIDL 全称Android 接口定义语言(Android Interface Definition Language),是一种用于定义客户端和服务端之间的通信接口的语言,它可以让不同进程之间通过IPC(进程间通信)进行数据交互。在 Android 系统中一个进程通常无法直接访问另一个进程的内存空间,这被称为Application Sandbox。
2023-07-01 18:22:16
764
2
原创 Android 使用AIDL传输超大型文件
我们先不细究,为什么要用AIDL传递大文件,单纯从技术的角度考虑能不能实现。众所周知,AIDL是一种基于Binder实现的跨进程调用方案,Binder 对传输数据大小有限制,传输超过 1M 的文件就会报 android.os.TransactionTooLargeException 异常。
2023-04-06 09:32:16
3114
2
原创 【视频文稿】车载Android应用开发与分析 - 开发系统应用
开发车载应用,其实主要都是在Android系统中编写各种系统应用,所以上期视频先介绍了Android系统源码的下载和编译流程,本期视频我们开始介绍,Android系统应用是如何开发的。
2023-03-13 17:12:20
2535
原创 【车载 Android】应用换肤方案(一) - Runtime Resource Overlay
手机应用的动态换肤功能目前已经使用的比较广泛了,也有许多文章分析了其中的原理,使用方式也大同小异,基本都需要在应用内集成一个三方的框架,或独立开发一个换肤框架。此类换肤方式需要长期维护一套换肤框架,对原始应用存在一定的侵入性,开发的复杂度、工作量都会比较大。车载应用出于稳定性的考虑,对于引入第三方框架会比较克制,所以目前车载系统应用少见有直接采用手机应用换肤方案的(当然也不是没有,博主也做过)。那么车载应用要如何在降低复杂度、工作量的前提下实现应用换肤呢?
2023-02-28 10:36:40
2715
4
原创 【书评】搞车载系统服务?这本入门书或许可以翻一翻
关注我的朋友,多数都是从事车载应用开发的程序员,相信其中一定有一部分人正在从事车载系统服务的定制和开发,那么今天就给这样一部分人群推荐一本我最近刚刚读完的书, 《智能汽车宝盒之钥 - Android Automotive车载信息系统》
2023-02-26 00:15:54
1739
3
原创 【视频文稿】车载Android应用开发与分析 - AOSP的下载与编译
本期视频我们介绍学习车载Android应用开发的第一步,如何下载、编译 AOSP源码,启动原生的车载Android模拟器 ,同时也会介绍一些常见的编译指令,以及实际工作中可能会出现的编译场景。
2023-02-22 16:25:42
3073
3
原创 【视频文稿】车载Android应用开发与分析 - 走进车载操作系统
根据Counterpoint Research的调研,2022年中国智能手机销量同比下降高达14%,达到了近十年来的最低水平...
2023-02-13 10:13:52
2779
2
原创 车载Android程序员的2022年终总结与转行建议
不知不觉间2022年只剩下几天了,这意味着我即将迈入30岁的殿堂,作为一个搞车载的程序员,而立之年感受颇多,简单分享一下2022年的个人总结。
2022-12-18 16:16:51
1842
4
原创 【Android R】车载 Android 核心服务 - CarPropertyService 解析
对比开发车载Android和手机Android应用,最大的区别应该就是许多车载应用需要考虑汽车整体的运行状态,例如,控制车载空调或车速达到一定的阈值时,出于安全的...
2022-11-19 16:19:11
4601
3
原创 【Android R】车载 Android 核心服务 - CarService 解析
在之前的文章从应用工程师的角度再谈车载 Android 系统中提到了"CarService是车载Android系统的核心服务之一,所有应用都需要通过CarService来查询、控制整车的状态",不仅仅是车辆控制,实际上CarService几乎就是整个车载Framework最核心的组件,这也让CarService成了各种bug的重灾区,一部分原因就是开发同学对于CarService的运行原理与实现方式理解的不够深,那么本篇我们就来讲解Android Automotive R上CarService是如何实现。
2022-11-07 06:31:19
7139
2
原创 从应用工程师的角度再谈车载 Android 系统
众所周知,今年互联网行业发展的并不愉快,导致互联网行业就业形势不太理想,“开猿节流”的事情时有发生,于是不少Android开发萌生了转行做车载的想法。
2022-10-18 23:18:13
3909
3
原创 BinderProxy 泄露导致的 Crash
同事负责的车载项目已经进行小批量试产,Monkey 测试的强度也开始提高,然后不出意外的话是要出意外了,一个车辆核心功能的 service 在高强度的 monkey 测试中几乎必挂。
2022-10-11 16:44:45
3310
1
原创 Android车载应用开发与分析(13)- 系统设置-蓝牙设置
Android 车载应用开发与分析是一个系列性的文章,这个是第13篇分析系统设置,该系列文章旨在分析原生车载Android系统中核心应用的实现方式,帮助初次从事车载应用开发的同学,更好地理解车载应用开发的方式,积累android系统应用的开发经验。系统设置是车载Android系统中非常重要的一个系统级应用,是整个车载IVI系统的控制中心,整车的音效、无线通信、状态信息、安全信息等等都是需要通过系统设置来查看和控制。例如,开启/关闭 wifi 和蓝牙,查看每个应用的网络流量,开启调试信息等。
2022-10-09 10:19:54
3839
2
原创 Android 车载应用开发与分析(12) - SystemUI (一)
Android 车载应用开发与分析是一个系列性的文章,这个是第12篇,该系列文章旨在分析原生车载Android系统中核心应用的实现方式,帮助初次从事车载应用开发的同学,更好地理解车载应用开发的方式,积累android系统应用的开发经验。注意:本文的源码分析部分非常的枯燥,最好还是下载android源码然后对着看,逐步理顺逻辑。本文中使用的源码基于android-11.0.0_r48在线源码可以使用下面的网址(基于android-11.0.0_r21)
2022-09-19 10:34:46
8055
2
原创 车载Android进阶篇(NDK其一) — CMake基础
在车载应用开发时,NDK其实并不常用。不常用但也不是完全用不到,车载应用开发以下的一些场景会需要使用NDK调用Linxu API。例如:将线程绑定到指定的CPU核心上运行。使用高性能图形API。例如:使用OpenGL ES或Vulkan绘制图。复用C/C++库其他需要使用Native API的情况NDK 使用入门 | Android NDK | Android Developers。本文主要讲解,在Android使用NDK所必须的构建工具 — CMake。...
2022-08-08 01:14:18
2097
原创 RE: 从零开始的车载Android HMI(三) - SurfaceView
从零开始的车载Android HMI是一个系列性的文章,目的在于展示一些在Android手机应用开中不常用,但是在车载应用开发中较为常用的一系列AndroidHMI组件,希望能够帮助初入车载应用开发的同学了解车载应用开发过程中常用的各种UI组件。......
2022-07-23 18:43:50
2061
原创 RE: 从零开始的车载Android HMI(二) - Widget
Widget,又叫“微件”、“小部件”。小部件是放置在主屏幕(Launcher)上的Android应用程序的小工具或控件。通过小部件可以将自己喜欢的应用程序放在主屏幕上,以便快速访问它们或是显示一些重点信息。............
2022-07-11 10:27:10
2269
1
原创 RE: 从零开始的车载Android HMI(一) - Lottie
多年以前汽车还是以机械仪表主体的年代,各大汽车主机厂商并不十分关注操作系统UI的交互功能,但是随着车载SOC算力的不断提高以及主机厂商对汽车座舱竞争的白热化。座舱的HMI在设计上在强调功能性的同时也开始关注UI的艺术性,HMI的设计师们期望艺术与功能应该协同工作,让用户沉浸在“第三空间”的体验中。有了需求程序员就需要关注如何实施和落地,然而Android应用本身虽然有着完整的动画框架支持,但是开发复杂、调试耗时,大型的gif或逐帧动画对于CPU&内存占用都不太理想,所以许多Android的手机应用基本上不怎
2022-07-03 21:00:17
3501
原创 Android车载应用开发与分析(11)- 车载Android应用开发入门指南
将时间回退到2017年我大学刚毕业时,彼时移动互联网就已经开始退潮,各大个培训机构也纷纷停止了Android相关的培训,曾经热火朝天的应用开发从那时起,就开始走向下坡路,小程序以及众多跨平台框架也让市场对Android原生开发的需求逐年降低,市场需求的降低也造就了Android开发的面试变得史无前例的“卷”。终于我在2019年选择离开了互联网,投身当时还不是非常火热的车载Android领域继续从事Android原生开发。而这一年中国首个外商独资的整车制造项目,“...
2022-05-03 01:04:06
14991
21
原创 Android车载应用开发与分析(10)- 车载空调系统(HVAC)
HVAC 功能介绍HVAC 全称:供暖通风与空气调节(Heating Ventilation and Air Conditioning)。用户可以通过他来控制整个汽车的空调系统,是汽车中非常重要的一个功能。汽车的空调HMI虽然并不复杂,但是大多都是用符号来表示功能,对于还没有实际用过汽车空调系统的开发者来说,理解空调的各个符号表示的含义也是非常有必要。下面就以Android 12中的HVAC来介绍空调系统中包含的最基础的功能。1.1 双区温度调节空调的温度调节功能,默认是华氏度,可以在系统设置.
2022-04-04 13:33:10
7023
3
原创 Android车载应用开发与分析(番外)- 2022年Fragment使用解析(上)
本文虽然冠名『车载』但涉及到的知识点是所有Android APP开发通用的本文基于 AndroidX Fragment library 编写,阅读本文需要有一定Fragment使用基础写这篇博客的原因是最近和同事交流某个项目中遇到的问题时,发现我们对Fragment使用方式相比4-5年前几乎.
2022-03-28 09:38:01
1263
原创 Android车载应用开发与分析(7)- 车载多媒体(二)- 多媒体应用架构与MediaSession框架
播放音频或视频的多媒体应用通常由两部分组成:播放器:接收传入的数据多媒体,并输出音频或视频。可以是MediaPlayer、ExoPlayer或其他Player。界面:用于显示、控制播放.
2022-02-13 15:15:53
5260
9
原创 Android车载应用开发与分析(6)- 车载多媒体(一)- 音视频基础知识与MediaPlayer
多媒体应用是车载信息娱乐系统的一个重要组成部分,一般包含音视频播放、收音机、相册等。车载应用多媒体系列初步计划分为六篇,这是第一篇。参考资料、等。
2022-02-13 15:15:34
4396
2
原创 Android 车载应用开发与分析(5) - CarLauncher(一)
在之前的Android车载应用开发与分析(1) - Android Automotive概述与编译中了解了如何下载以及编译面向车载IVI的Android系统,一切顺利的话,运行模拟器,等待启动动画播放完毕后,我们所能看到的第一个APP就是车载android的桌面,而这就是本篇文章的重点 - CarLauncher。本篇文章以解析Android 11 源码中CarLauncher为主。为了便于阅读源码,现将CarLauncher的源码整理成可以导入Android Studio的结构,源码地址:https:/
2022-01-08 15:25:01
8224
3
转载 Android 车载应用开发与分析 (4)- 编写基于AIDL 的 SDK
前言之前我们介绍了车载应用开发体系中如何使用Jetpack在HMI中构建MVVM架构Android 车载应用开发与分析 (3)- 构建 MVVM 架构(Java版),通过之前的介绍,也了解到在大多数车载系统应用架构中,一个完整的应用往往会包含三层,分别是HMIHuman Machine Interface,显示UI信息,进行人机交互。Service在系统后台进行数据处理,监控数据状态。SDK根据业务逻辑Service对外暴露的通信接口,其他模块通过它来完成IPC通信,通常是基于AI
2021-11-23 09:37:03
2374
1
转载 Android 车载应用开发与分析 (3)- 构建 MVVM 架构(Java版)
前言在大多数车载系统应用架构中,一个完整的应用往往会包含三层:HMIHuman Machine Interface,显示UI信息,进行人机交互。Service在系统后台进行数据处理,监控数据状态。SDK根据业务逻辑Service对外暴露的通信接口,其他模块通过它来完成IPC通信。当然并不是所有的应用都需要Service,只有不能长久的驻留在内存中,且需要监控系统数据和行为的应用才需要Service。举个例子,系统的OTA需要一个Service在IVI的后台监控云服务或SOA
2021-11-15 09:24:29
3412
3
转载 Android车载应用开发与分析(2) - 集成第三方APK
前言在车载的应用开发过程中,会有一类特殊的需求,就是在预装一些第三方app,常见的有百度地图车载版、车载微信等等。这类app OEM 厂商都不会得到源码,只能得到一个apk。本篇文章基于Android R演示如何在aosp_car_x86_x64中预装第三方apk。aosp_car_x86_x64我们在编译AOSP选择的build_type,如果你还不知道如何编译AOSP可以参考这篇文章Android车载应用开发与分析(1) - Android Automotive概述与编译。各个OEM厂商预装第三方
2021-10-11 19:57:22
3289
1
原创 Android车载应用开发与分析(1) - Android Automotive概述与编译
在智能手机行业初兴起时,包括BAT在内许多传统互联网企业都曾布局手机产业,但是随着手机市场的基本定型,造车似乎又成了各大资本下一个追逐的方向。百度、小米先后宣布造车,阿里巴巴则与上汽集团共同投资创立了,面向汽车全行业提供智能汽车操作系统和智能网联汽车整体解决方案的斑马网络,一时间造车俨然成了资本市场的下一个风口。而作为移动端操作系统的霸主 - Android,也以一种新的姿态高调侵入造车领域,这就是 Android 车载信息娱乐系统 - Android Automoti...
2021-08-25 01:03:14
17268
9
转载 Android-Jetpack依赖注入框架 - Hilt 入门指南
一. Hilt 介绍Hilt 是 Android官方在依赖注入库Dagger的基础上二次封装的产物。学习过Dagger的同学一定会发现,Dagger作为依赖注入框架,虽然功能强大,但是较高的学习门槛,使得Dagger在Android上的落地成本很高。为了解决上述问题,Android官方推出了学习门槛更低的Hilt框架。Hilt 通过为项目中的每个 Android 类提供容器并自动管理其生命周期,提供了一种在应用中使用依赖注入的标准方法。本文所示的源码请参考:linux-link/HiltUseDemo
2021-08-15 18:39:52
992
转载 Android.bp入门教程
Soong 编译系统在 Android 7.0 发布之前,Android 仅使用 GNU Make 描述和执行其构建规则。Make 构建系统得到了广泛的支持和使用,但在 Android 层面变得缓慢、容易出错、无法扩展且难以测试。Soong 构建系统正好提供了 Android build 所需的灵活性。Soong 构建系统是在 Android 7.0 (Nougat) 中引入的,旨在取代 Make。它利用 Kati GNU Make 克隆工具和 Ninja 构建系统组件来加速 Android 的构建。
2021-08-08 21:38:33
8954
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人