Android
文章平均质量分 75
林多
从事座舱架构相关工作
展开
-
【Android】Android应用性能优化总结
最近大半年的时间里,大部分投在了某国内新能源汽车的某款AndroidApp开发上。由于该App是该款车上,常用+重点应用。所以车厂对应用性能的要求比较高。应用冷启动达到***ms。应用热(温)启动达到***ms应用内画面切换响应达到**ms应用内动效/动画/车模等交互时,画面不能有延迟感等等。应用不能有内存泄露,内存稳定在**MB诸如上面的内容,还有一些,就不详细列出来了。因为之前没有直接做过AndroidApp开发,之前大部分时间在做Framework/System开发。原创 2024-05-05 20:48:55 · 1039 阅读 · 1 评论 -
【Android12】Bugreport实现原理
Android Bugreport是一个用于记录和收集 Android设备上系统信息、日志和调试信息的工具。系统发生某些问题时,可以通过bugreport把系统当前时刻点(运行BugRepot的时刻)的系统相关的状态和信息都抓到一个zip中。通过bugreport可以帮忙开发人员分析和解决问题。Bugreport其实就是一系列的信息的汇总,包括日志、内存状态、进程信息、崩溃信息、服务状态等等。用一个大而近乎全的现场,来帮忙更好的分析问题。原创 2024-04-22 22:18:00 · 1709 阅读 · 2 评论 -
【Android】App通信基础架构相关类源码解析
应用通信基础架构相关类源码解析这里主要对Android App开发时,常用到的一些通信基础类进行一下源码的简单分析,包括:Handler、looper、runnable、Messagequeue、Thread。原创 2024-04-05 18:02:58 · 752 阅读 · 0 评论 -
【Android12】Android性能调优工具SystemServerTiming日志
SystemServerTiming是Android原生系统中一个日志标签,也就是tag为SystemServerTiming的日志,这类日志信息会输出到Logd和Trace系统中。可以通过Android logcat 或者 抓取Systrace的方式取得。原创 2024-03-03 19:03:00 · 836 阅读 · 0 评论 -
【Java】Java类动态替换Class
基于上面的几个方法,可以实现动态替换Class对象。可以在代码中,利用上面的方式,将FunctionA动态替换为FunctionB。Java提供的ClassLoader可用于动态加载的Java类,可以通过多种形式获取ClassLoader。通过这个方法,可以获取类中所有声明的构造函数。要创建类对象的话,需要知道Class的构造函数,以及构造函数的各个参数。Method类提供的newInstance,可以用于创建并返回指定类的实例。通过Java的Class对象,可以实现动态替换Class。原创 2024-01-27 19:13:38 · 550 阅读 · 0 评论 -
【Android】VirtualDisplay创建流程及原理
【代码】【Android】VirtualDisplay创建流程及原理。原创 2023-10-15 14:34:40 · 6701 阅读 · 0 评论 -
【Hilog】鸿蒙系统日志源码分析
Hilog采用C/S结构,Hilogd作为服务端提供日志功能。Client端通过API调用(最终通过socket通讯)与HiLogd打交道。原创 2023-08-11 11:18:42 · 2925 阅读 · 0 评论 -
Android NTP时间同步源码分析
Android系统设置自动时间后,如果连接了可用的网络。会同步网络时间。这个处理是 NetworkTimeUpdateService完成的原创 2023-07-09 19:35:44 · 1249 阅读 · 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 · 1593 阅读 · 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 · 2934 阅读 · 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 · 2203 阅读 · 0 评论 -
【Android 】Prebuilt预编译
Android Prebuilt编译方式Android提供了Perbuilt编译方式,处理已经编译好的库或配置文件# perbuilt.mkBUILD_PERBUILT# multi_perbuilt.mkBUILD_MULTI_PERBUILTPerbuilt针对独立文件的操作。Multi_Perbuilt针对多个文件,对多个文件进行判断,调用Prebuilt依...原创 2020-04-19 21:46:52 · 5240 阅读 · 2 评论 -
模拟器System分区写保护取消
模拟器System分区写保护取消命令mount -o rw,remount /system参数含义# 用可读写模式,重新挂载-o rw,remount# 指定重挂载的分区/system同理:system分区以只读模式重新挂载mount -o rw,remount /system...原创 2019-02-24 17:47:56 · 1565 阅读 · 0 评论 -
undefined reference to `ANativeWindow_fromSurface'
问题:undefined reference to `ANativeWindow_fromSurface'也就是在链接时找不到函数ANativeWindow_fromSurface的定义解决:# 编译时,没有link对应so# libandroid.so# 编译时,在依赖的动态库列表中添加即可-landroid...原创 2018-09-24 15:14:46 · 3097 阅读 · 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 · 2059 阅读 · 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 · 5589 阅读 · 0 评论