
Android
文章平均质量分 70
林多
座舱架构师
展开
-
【Android】VehiclePropertyAccess引起CarService崩溃
对于车辆属性的操作,在Android11版本,调用CarService注册监听属性,如果违反了其权限规定,会导致CarService崩溃。编译时,会被转成VehiclPropConfig,记录到每个车辆属性中。某应用调用 CarPropertyManager的registerCallback接口,注册监听属性ID。VehiclePropertyAccess属性,用于定义车辆属性的访问权限。违反VehiclePropertyAccess权限,导致的CarService崩溃。android12已修复该问题。原创 2025-03-23 14:43:36 · 361 阅读 · 0 评论 -
LOCAL_PREBUILT_JNI_LIBS使用说明
使用my_prebuilt_jni_libs,对my_embedded_perbuilt_jni_libs赋值(找出@对应的lib),并将my_embedded_perbuilt_jni_libs赋值给embedded_prebuilt_jni_libs(见上图)使用embedded_prebuilt_jni_libs对PRIVATE_EMBEDED_JNI_LIBS赋值。使用LOCAL_PREBUILT_JNI_LIBS,可用于控制APK集成时,其相关so的集成方式。比如,用于将APK中的so,原创 2025-02-05 15:40:50 · 447 阅读 · 0 评论 -
【Android】tombstone.pb文件解析
Android系统新增使用 proto buf格式保存的墓碑文件,本篇介绍如何解析tombstone.pb格式的文件。原创 2024-10-26 15:35:26 · 497 阅读 · 0 评论 -
【Android】JNI报错 non-zero capacity for nullptr pointer分析
Android程序报错。Abort message: 'JNI DETECTED ERROR IN APPLICATION: non-zero capacity for nullptr pointer: 1原创 2024-10-20 15:33:43 · 440 阅读 · 0 评论 -
【Android】CarWatchDog I/O监控服务
Car WatchDog中的IO Monitor,会监监控所有应用或服务的磁盘I/O用量。后续通过复现,抓取IO相应日志,发现出现问题时该应用,在一天内的写入量超过3GB,这个值已经超过系统的阈值配置。通过日志分析,发现应用被系统的 Car WatchDog(喂狗服务)Disable掉了。Car WatchDog中的IO Monitor,会统计一天内的I/O使用情况。关于Android源码部分的实现,可以感兴趣的可以阅读如下源文件。该日志说明,这款应用因为I/O使用超过阈值,被系统Kill。原创 2024-10-05 14:40:54 · 887 阅读 · 0 评论 -
【Android】Android应用性能优化总结
最近大半年的时间里,大部分投在了某国内新能源汽车的某款AndroidApp开发上。由于该App是该款车上,常用+重点应用。所以车厂对应用性能的要求比较高。应用冷启动达到***ms。应用热(温)启动达到***ms应用内画面切换响应达到**ms应用内动效/动画/车模等交互时,画面不能有延迟感等等。应用不能有内存泄露,内存稳定在**MB诸如上面的内容,还有一些,就不详细列出来了。因为之前没有直接做过AndroidApp开发,之前大部分时间在做Framework/System开发。原创 2024-05-05 20:48:55 · 1173 阅读 · 1 评论 -
【Android12】Bugreport实现原理
Android Bugreport是一个用于记录和收集 Android设备上系统信息、日志和调试信息的工具。系统发生某些问题时,可以通过bugreport把系统当前时刻点(运行BugRepot的时刻)的系统相关的状态和信息都抓到一个zip中。通过bugreport可以帮忙开发人员分析和解决问题。Bugreport其实就是一系列的信息的汇总,包括日志、内存状态、进程信息、崩溃信息、服务状态等等。用一个大而近乎全的现场,来帮忙更好的分析问题。原创 2024-04-22 22:18:00 · 2927 阅读 · 2 评论 -
【Android】App通信基础架构相关类源码解析
应用通信基础架构相关类源码解析这里主要对Android App开发时,常用到的一些通信基础类进行一下源码的简单分析,包括:Handler、looper、runnable、Messagequeue、Thread。原创 2024-04-05 18:02:58 · 816 阅读 · 0 评论 -
【Android12】Android性能调优工具SystemServerTiming日志
SystemServerTiming是Android原生系统中一个日志标签,也就是tag为SystemServerTiming的日志,这类日志信息会输出到Logd和Trace系统中。可以通过Android logcat 或者 抓取Systrace的方式取得。原创 2024-03-03 19:03:00 · 1132 阅读 · 0 评论 -
【Java】Java类动态替换Class
基于上面的几个方法,可以实现动态替换Class对象。可以在代码中,利用上面的方式,将FunctionA动态替换为FunctionB。Java提供的ClassLoader可用于动态加载的Java类,可以通过多种形式获取ClassLoader。通过这个方法,可以获取类中所有声明的构造函数。要创建类对象的话,需要知道Class的构造函数,以及构造函数的各个参数。Method类提供的newInstance,可以用于创建并返回指定类的实例。通过Java的Class对象,可以实现动态替换Class。原创 2024-01-27 19:13:38 · 777 阅读 · 0 评论 -
【Android】VirtualDisplay创建流程及原理
【代码】【Android】VirtualDisplay创建流程及原理。原创 2023-10-15 14:34:40 · 9423 阅读 · 0 评论 -
【Hilog】鸿蒙系统日志源码分析
Hilog采用C/S结构,Hilogd作为服务端提供日志功能。Client端通过API调用(最终通过socket通讯)与HiLogd打交道。原创 2023-08-11 11:18:42 · 3228 阅读 · 0 评论 -
Android NTP时间同步源码分析
Android系统设置自动时间后,如果连接了可用的网络。会同步网络时间。这个处理是 NetworkTimeUpdateService完成的原创 2023-07-09 19:35:44 · 1396 阅读 · 0 评论 -
Android12启动崩溃 no namespace called
Android使用了基于命名空间的动态连接器,用来解决生态碎片及安全问题(关于这部分的可以自行搜索,下图为android官网给出的命名空间隔离图示)。Android12系统开机启动后,系统卡在开机界面,无法进去home。adb终端查看后,发现zyogte64启动崩溃。这个问题就是zyogte64这个进程在加载apex时,找不到com_android_art这个命名空间。代码定位(art/libnativeloader/native_loader.cpp)原创 2022-09-25 17:49:12 · 1699 阅读 · 0 评论 -
Android Init Language(RC文件)介绍
Android Init Language介绍基本概念什么是rc文件?Android Init进程用rc做了什么?相关内容Android RC文件应用Android rc文件语法解析Line-oriented语法组成ActionServicesOption和CommandTriggerimport基本概念什么是rc文件?rc文件,是用Android Init Language编写的特殊文件。用这种语法编写的文件,统一用".rc"后缀。所有rc文件,不会被编译/链接。它是配置文件,不是程序,是一种用于原创 2020-12-21 14:19:37 · 3345 阅读 · 0 评论 -
【Android】Android源码及系统目录结构分析
Android源码及系统目录结构分析Android源码(Android10)目录说明/artAnroid RunTime(Android运行环境)/bionicbionic C库(嵌入式专用的c库)/bootable启动引导相关代码/build系统编译规则(基础开发包的配置)/compatibilityAndroid兼容定义文档(cdd)/ctsCompatibility Test Suite(Google兼容测试标准)/dalvik原创 2020-12-07 19:39:07 · 2277 阅读 · 0 评论 -
【Android 】Prebuilt预编译
Android Prebuilt编译方式Android提供了Perbuilt编译方式,处理已经编译好的库或配置文件# perbuilt.mkBUILD_PERBUILT# multi_perbuilt.mkBUILD_MULTI_PERBUILTPerbuilt针对独立文件的操作。Multi_Perbuilt针对多个文件,对多个文件进行判断,调用Prebuilt依...原创 2020-04-19 21:46:52 · 5498 阅读 · 2 评论 -
模拟器System分区写保护取消
模拟器System分区写保护取消命令mount -o rw,remount /system参数含义# 用可读写模式,重新挂载-o rw,remount# 指定重挂载的分区/system同理:system分区以只读模式重新挂载mount -o rw,remount /system...原创 2019-02-24 17:47:56 · 1715 阅读 · 0 评论 -
undefined reference to `ANativeWindow_fromSurface'
问题:undefined reference to `ANativeWindow_fromSurface'也就是在链接时找不到函数ANativeWindow_fromSurface的定义解决:# 编译时,没有link对应so# libandroid.so# 编译时,在依赖的动态库列表中添加即可-landroid...原创 2018-09-24 15:14:46 · 3160 阅读 · 5 评论 -
Android.mk简单语法及小例
Android.mk简单语法及小例Android.mk同Makefile,用来指定项目编译时需要的源文件、头文件路径、依赖的lib(动态或静态),以及指定编译的版本(User\Eng\Test\Optional)、编译器的可选参数等等。其实,Android.mk可以简单理解为关键字和语法规范拼凑起来,用于编译的脚本语言。常用关键字LOCAL_PATH:=$(call my-dir)...原创 2018-09-23 17:03:08 · 2119 阅读 · 0 评论 -
adbd cannot run as root in production builds解决方法
问题:使用Android studio自带的AVD Manager开启模拟器后,运行 adb root,会出现如下提示: adbd cannot run as root in production builds解决方法:其实很简单。如果要以root权限,进入emulator的话。不要使用如下类型的Image创建emulator,否则会导致上述问题的发生。Google Play Int...原创 2018-03-22 14:08:09 · 5675 阅读 · 0 评论