自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 常用的框架——— Android UtilCode

AndroidUtilCode是一个功能强大且易于使用的Android库。该库封装了Android开发中经常使用的具备完整演示和单元测试的功能。经过使用其封装的API,能够大大提升开发效率。该程序主要由两个模块组成,utilcode(一般在开发中使用)和subutil(在开发中不多使用),比较常用的差不多都在 utilcode 模块中。

2024-05-24 11:39:24 1765

原创 aosp编译android14,启动Goldfish模拟器

本地存在一套main分支的aosp代码,由于main分支下的build/make/target/product/ 下不存在sdkx_xxx.mk(这种是带Goldfish模拟器的)这种配置文件,只能lunch aosp_cf_x86_64_phone-xxx这种,这种是Cuttlefish模拟器,所以需要切分支,切到android14-release。执行sync.py的时候,失败,无法自动移除不存在于manifest中的仓库。,修改一下url,使用google源,不使用清华源。注意最后有一行回车。

2024-05-22 10:41:25 504

原创 Android设计模式实战 ,实现一个弹窗引擎封装

最近项目使用的一个第三方库很多线上 Bug 所以考虑换一个第三方库了,结果去除依赖之后导致基本每个页面都要修改,项目全部爆红,人都麻了,悔不该当初图方便没有使用引擎类啊。第三方库提供基本的各种功能,引擎类封装一层给自己的项目预定特定的效果,上层应用只需要调用引擎即可实现效果,不需要关心底层的实现,不需要引用第三方的依赖和类库。当我们第三方库升级或替换的时候,只需要修改引擎类即可。下面我以弹窗库的封装为例,封装一个弹窗引擎库,下来就一起来看看吧。

2024-05-21 14:31:43 832

原创 AI时代的Android程序员技能升级之路

随着人工智能技术的飞速发展,我们正处在一个前所未有的技术变革时期。AI不仅改变了我们的生活方式,也深刻影响了软件开发的领域。在这个智能时代,。AI技术的迅猛发展为程序员带来了双重挑战和机遇。一方面,传统的编程技能可能迅速过时,新的编程语言和工具如雨后春笋般涌现。另一方面,AI提供了强大的工具和平台,使得开发更加智能化、自动化。在这样的背景下,

2024-05-21 10:57:25 1770

原创 深入研究Android内存优化- 至少解决 APP 中 90 % 的内存异常问题

内存作为计算机程序运行最重要的资源之一,需要运行过程中做到合理的资源分配与回收,不合理的内存占用轻则使得用户应用程序运行卡顿、ANR、黑屏,重则导致用户应用程序发生 OOM(out of memory)崩溃。如果需要在各种设备资源上保持流畅性和稳定性,内存优化是性能优化中最重要的一环。内存问题普遍是大问题,每一行代码都涉及到内存申请以及回收等过程,但是缺少关注度。为什么缺乏关注,因为它的相对比较隐蔽,表现形式并不明显。

2024-05-20 11:22:30 825

原创 为什么Android程序员不学Android framework?

如果说你现在的工作不如意,那么当下入行framework是一个好的选择。Android framework的学习难度因人而异,对于初学者来说,有一定的挑战,但是对于想要从Android应用开发转framework是很方便的。Android Framework是Android系统的核心,涵盖了众多的组件、服务和工具,需要学习者具备一定的编程基础和系统级开发经验。所以目前如果说你想学但是没有方向,可以看看我总结的Android framework的全套学习资料,包含了从入门到进阶再到精通framework,

2024-05-18 15:37:44 924

原创 Android源码阅读:View测量流程

View的测量过程是View绘制三大步骤(测量、布局、绘制)中的第一步。整个View树的测量涉及的流程很多,我们先看一些必要的前置知识:每一个View(除去根节点以外)都存在于某一个ViewGroup中,子View的尺寸受到父View的限制,这就涉及到父View对子View的尺寸要求;每一个ViewGroup又可能包含多个子View,所以ViewGroup不仅要考虑其父View对自己的尺寸要求,还要考虑到自己对多个子View的尺寸;

2024-05-17 14:35:42 966

原创 Android Framework加堆栈打印追踪信息

在实际开发中,我们可能会遇到需要在Java应用程序中调用Native方法的情况,为了更好地跟踪代码执行路径,我们可以同时打印Java和Native的堆栈信息。我们希望在出现异常时能够获取到完整的Java和Native堆栈信息,以便更好地定位问题。Android.mk: LOCAL_SHARED_LIBRARIES里包含libutilscallstack Android.bp: shared_libs里包含libutilscallstackAndroid.mk: LOCAL_SHARED_LIBRARIES里

2024-05-16 16:34:40 361

原创 一文搞懂车载系统开发学习路线

面对以上需要掌握的技能,我对此总结了一份Android车载开发的学习资料,想要转行的朋友可以趁早下手学习了,有需要的朋友可以自行扫描下方二维码免费获取相关资料。

2024-05-16 15:01:52 1561

原创 自定义 Gradle 插件进行统一的静态代码分析

请看下面的声明. 这是 Gradle 插件项目的基本设置.plugins {ext {plugins {plugins {plugins {plugins {plugins {plugins {plugins {plugins {plugins {现在让我们从plugins块开始, 一步步解构配置. 请看下面的代码片段.plugins {命令会启用常规 Gradle 插件项目的任务.命令允许打包插件并发布到我最近正在向你展示整个发布过程.然后是基本的项目配置.group定义了。

2024-05-15 19:03:01 333

原创 Android Fabricated RRO简单理解

从system_neutral1_50来切入,简单理解Fabricated RRO。的颜色实际打印出来的是。但是在framework下的xml中,定义的并不是这个数据。使用查看,可以看到有2种类型文件,一种是文件,另一种是文件。中也没有定义该值,实际是中定义的。frro的原理是什么?这里不做深入,大致应该是是跟OverlayManagerService和Idmap2Service相关,具体可以参考这2条提交:和这段话介绍了“Fabricated Runtime Resource Overl

2024-05-14 14:45:34 615

原创 ViewModel 完全指南:实践与背后原理全解

在本文中,我们详细探讨了ViewModel的基本使用、工作原理及其在复杂应用中的高级应用。通过这些分析和代码示例,我们看到ViewModel不仅能够有效管理UI相关的数据,保持数据在配置变化时的持久性,而且通过与LiveData和Repository模式的结合使用,显著提高了应用的响应性和数据处理能力。

2024-05-13 14:24:33 2360

原创 【车企招聘】Android车载开发全套学习资料(收藏版)

目前智联网汽车迅速发展,入行的人相对较少,Android开发和Linux开发相对饱和,所以Android转行车载不失为一个好的时机,想要转行的朋友抓紧时机可以下手了。如果你还没有找到如何学习的方法和途径,在这里,我为大家整理了一份Android车载开发全套学习资料,感兴趣或有需要的朋友可以扫描下方二维码,免费获取。

2024-05-13 14:16:48 833

原创 Android Studio 读不到Android设备

在进行Android应用开发时,我们经常会遇到一种情况,就是Android Studio无法读取到连接在电脑上的Android设备。这个问题可能出现在不同的场景中,比如在运行应用程序时,设备列表中找不到连接的设备,或者无法在Android Device Monitor中看到设备等等。本文将为大家介绍一些常见的原因和解决方法。

2024-05-11 10:12:25 1863

原创 Android面试题之kotlin热流和channel

channel实际上是一个并发安全的队列,它可以用来连接协程,实现不同协程的通信channel实际上就是一个队列,队列中一定存在缓冲区,那么这个缓冲区一旦满了,并且也一直没有人调用receive并取走函数,send就需要挂起。默认缓冲区大小是0@Testvar i = 0;在读取channel时可以直接获取一个channel的iterator迭代器//也可以这样。

2024-05-10 10:11:00 354

原创 性能优化的核心思路,纯干货分享!

有一张订单表为了保持订单记录,更新数据时不能删除,需要打算加上版本号,查询时取版本号最新的给前端,还有场景是查询订单历史给前端。订单表量一般不会太小,每次先分组查询取出最大的一条,然后外层再去取对应的数据再分页显然性能不好。怎么办?可能也会有人会给出一些建议,然后呢?下次在遇到怎么办?网上很少有文章系统讲解性能优化的相关方法论,所以借着这次机会总结出来,分享给大家。

2024-05-09 11:11:04 1080

原创 android权限申请说明

在Android开发中,权限是指应用程序需要访问特定的设备功能或数据时所需的用户许可。从Android 6.0(API级别23)开始,Android引入了运行时权限模型,在应用程序运行期间向用户请求权限,而不是在安装时请求。举例手机外部读写和设备状态权限。

2024-05-09 10:42:51 219

原创 如何在Android上渲染VR场景——GvrView

这章节我们来介绍如何手动渲染VR场景,主要涉及两个重要的类:GvrActivity和GvrView。

2024-05-08 10:14:43 743

原创 HIDL Hal 开发指南7 —— 驱动开发

HIDL HAL 的整体架构如下图所示:接下来我们就来完成一个从驱动到 App 的完整 HIDL HAL 实现示例。本节的任务是在内核中实现一个简单的驱动,并完成一个应用层 Native 程序来测试我们的驱动是否正常工作。

2024-05-07 09:58:11 514

原创 RecyclerView还能这样滚动对齐?

RecyclerView要想滚动到指定position,一般有和两种方式。滚动到指定position后,通常还会要求itemView对齐RecyclerView起始点、中心点或结束点熟悉RecyclerView的人应该知道,使用自定义可以实现平滑滚动到指定position的同时,让itemView和RecyclerView的对齐;而方法只能滚动到指定position。那有办法让也做到对齐吗?

2024-05-06 10:21:41 458

原创 有人说flutter马上就要亖掉了。。。

好了,前面就是我对这些观点的自己的看法总的来说就是现阶段Flutter是跨平台最好的选择长期来看要警惕风险做好容错的准备如果看到这里的同学有学习Flutter的兴趣,可以扫描下方二维码获取相关学习资料。

2024-05-06 10:12:02 2725

原创 代理模式:实现高效、可扩展的代码架构的必备利器

当无法或不想直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问 为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口

2024-05-05 10:33:33 1453

原创 Android 15 新 API:内存追踪利器 ProfilingManager

我们都知道 Android Studio 里内置了Profilertool 供大家对 App 在 Memory、CPU、Network、Power 等角度进行 dump 和分析。但如果一个内存相关的 bug 是运行时发生的,而且很难复现,那么后期就很难准确定位发生时的具体状况。值得兴奋的是 Android 15 将直面这个痛点:引入了API,允许 app 对 Memory 进行动态的、随时随地的 dump。生成的文件默认存在本地,也可以通过网络传递到 offboard,方便开发者事后回溯。

2024-05-02 10:45:00 779

原创 Kotlin协程Flow与Channel对比

上游和下游属于同一个线程里。只有下游才能通知上游放水,Flow属于冷流。生产数据的模块将生产过程封装到flow的上游里,最终创建了flow对象。

2024-04-30 09:20:29 986

原创 Android Binder服务的获取与使用

根据代码可以看到,最终是调用到了ProcessState->getStrongProxyForHandle方法中,传递的值是期望获取的Server的handle。//此方法和前边代码稍有不同的地方在于 reply这个参数,签名reply为0,此处不为0,则所有分支都应走if(reply)//将内核的binder_work添加至thread中的待执行队列。//在目标进程的wait_threads中获取一个thread。//生命局部变量的代码和之前讲过的流程一致。//代码在这里被唤醒。

2024-04-29 14:14:27 874 1

原创 管道数据过读导致堵塞问题分析

原因是: 管道双方读写时序不可控,时序上刚好写者进程先发生,往缓存写入两个字符 01 66,然后读者进程,首次读取管道数据 4 个字符,取出了所有数据,导致后面管道阻塞。...

2024-04-28 10:00:00 554

原创 Modifier 性能优化

在前两篇文章中,我们学习了 Modifier 的基础概念和自定义方法。Modifier 为我们提供了强大的定制能力,但是如果使用不当,也可能带来一些性能问题。合理使用 Modifier 对应的渲染性能至关重要。本文将分享一些 Modifier 优化的实践经验,帮助你更好地控制重组开销,避免不必要的绘制,从而提升应用的流畅度。

2024-04-26 10:13:49 569

原创 Android - 你可能需要这样一个日志库

/ 自定义日志格式/** 日志标识 *//** 日志tag *//** 日志内容 *//** 日志等级 *//** 日志生成的时间戳 *//** 日志是否在主线程生成 *//** 日志生成的线程ID */日志存储是通过FLogStore接口实现的,每一个FLogStore对象负责管理一个日志文件。所以需要提供一个工厂为每个日志文件提供FLogStore对象。// 添加日志// 返回当前日志的大小// 关闭如果你看到了这里,觉得文章写得不错就给个赞呗?

2024-04-25 09:54:23 1010

原创 Kotlin 跨平台 |我觉得可以试试

今年我投入了非常多的时间到kotlin相关的事情中了,上半年改造完成了全工程的的移除,主要是为了方便后续升级kotlin版本。然后5月份开始就为整个阿逼工程的工程准备到九月份。另外最后从阿逼走之前在做的就是kotlin相关的组件版本升级到1920。降本增效之后呢我月初已经入职了xhs,转眼已经在xhs打工了三个礼拜了,我打算在xhs开始继续实践我的kmp跨端,当然也有可能我试试就逝世了。

2024-04-24 10:01:14 1171 1

原创 Skia在Android中的作用

最后追踪到这里了,就已经基本上是Skia库的核心代码了,在这里我看到这里注释,看到了一个前端后端的含义,原本对这里并不是特别的清楚。这里摘抄一下别的文章的原文在 Skia 图形库中,分为前端和后端,前端通常指的是图形库提供的接口和功能,用于创建和操作图形对象、设定图形属性、以及定义图形场景;后端指的是图形库的渲染引擎,负责将前端定义的图形场景渲染到屏幕上,后端通常涉及图形硬件的交互。以上不同的Gpu的类型也对应这不同的渲染后端/***/

2024-04-23 09:22:56 1095 3

原创 Kotlin开发的10个Tips(Android程序员必读)

最近没有什么好写的,正好对kt做一个总结。可以来简单聊聊使用kt时的一些tips,如果有大佬有其它更好的建议,希望能分享出来,废话不多说,直接开始。

2024-04-22 12:35:09 718 4

原创 如何准备Android面试?(准备面试的可以看看)

面试前需要好好准备,面试后需要及时复盘,在这里给大家分享一份Android的面试资料题,涵盖了Java、framework、性能优化等多个方面的知识,都是企业常问到的题目,希望能帮到大家在面试中成功的拿下offer。有需要的朋友可以扫描下方二维码,免费获取更多相关资料。

2024-04-22 12:34:22 531

空空如也

空空如也

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

TA关注的人

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