- 博客(2712)
- 资源 (4)
- 收藏
- 关注
转载 Android项目开发模板开源与相关介绍
其实我们优化项目架构的真实目的是为了细致化的逻辑分层,还需要顾及到多个员工协作的开发效率,还要兼顾应用产品的多变性,不是炫技,不是为了分层而分层,最终目的还是单一职责,高内聚低耦合的思想。
2024-03-19 10:42:20 2
转载 实战鸿蒙:如何实现应用悬浮窗
从一位老安卓开发的视角,经历了 Google 对 Android 这么多年的缝缝补补,而鸿蒙作为一款去年才开始真正发力的操作系统,除了给用户带来良好的使用体验以外,给开发者带来良好的开发体验也是至关重要的。希望鸿蒙可以给开发者带来更多便利的系统特性。公众号历史文章无法修改,我会把鸿蒙系列文章整理到语雀知识库参考资料[1][2]实战鸿蒙:如何实现应用悬浮窗。
2024-03-19 10:20:59 1
转载 App接入Android指纹识别
Biometric Authentication 是一种使用面部或指纹识别进行用户认证的方式,这是保护敏感信息的方法之一。它对于需要用户每次打开应用都要进行认证的金融和医疗健康应用非常重要。
2024-03-18 17:04:59 3
转载 从 XML 到 Compose 快速迁移指南
日常工作,业务需求中的界面布局是至关重要的一部分,长期以来,我们一直都是使用XML布局文件来定义自己的用户界面,但随着已经崭露头角,无疑成为了一种强大的UI工具,允许我们以更声明性和可组合的方式构建用户界面。到目前为止,Compose正在逐步取代XML,越来越多的技术团队已经开始普及使用。下面笔者将以初学者的角度出发,简单阐述如何将现有的XML布局文件转换为,实现无缝衔接,以便逐步迁移应用程序的用户界面。目前来说,国内Compose并没有完全替代XML传统布局,但将XML。
2024-03-18 16:39:20 6
转载 一个可以查看各个Android版本源代码的完整网站
不好的点就是,好像没看到哪里有搜索文件的入口,这也就意味着,你得知道需要找的文件的路径。现在可以查看Android源码的网站应该有很多,这里分享前面几天看到的一个。比较好的一个点就是,Android历史的各个版本都能看到。各个Kerenel版本也是有的。
2024-03-18 14:26:44 3
转载 RecyclerView实现列表中的Item之间设置间距的一种方式
RecyclerView 的 Item 默认没有间距是因为 RecyclerView 是一个高度自定义的控件,它的目标是提供一个高效灵活的列表展示,并且适应各种不同的布局需求。为了让开发者能够充分自定义列表项的布局和样式,RecyclerView 没有默认设置项来添加 item 之间的间距。这样设计的好处是,开发者可以灵活地根据自己的需求来处理 item 之间的间距,而不被固定的默认间距所限制。
2024-03-15 19:12:34 13
转载 货拉拉App录制回放的探索与实践
近些年货拉拉的业务持续高速发展,为了满足业务更短周期、更高质量交付的诉求,从今年开始我们的移动App的迭代交付模型也从双周演化为单周。因此,在一周一版的紧张节奏下,随之而来的对测试质量保障的挑战也日益增加,首当其冲要解决的就是如何降低移动App每周版本回归测试的人力投入。所以,在App UI自动化测试上摸爬滚打一段时间后,我们积累了大量的踩坑经验。但这些经验也让我们更加明白,如果要大规模推行App UI自动化测试,必须要提高自动化ROI,否则很难达到预期效果,成本收益得不偿失。
2024-03-15 13:56:15 15
转载 自定义ViewGroup扩展,基于事件伪造实现事件录制与回放
在之前的文章中我们复(学)习了 ViewGroup 的事件、滚动、惯性、多手指等操作。今天我们复(学)习一下事件的传递与伪造。之前在群里遇到有这样一种需求,我们需要把一段时间内的用户操作记录下来,并且可以回放操作。例如用户点击按钮或滑动,一旦出现闪退或其他问题,监控平台就可以通过用户的操作在云端或本地复现用户的操作,结合埋点与崩溃信息能更好的发现代码与逻辑漏洞并进行修复。通过录制的按钮与图标、滚动的坐标等信息再结合当前的设备进行对应的适配并回放。
2024-03-15 11:26:26 6
转载 Android 音视频&OpenGL开发干货汇总
Android FFmpeg 和 OpenGL 一直作为本号的主线文章系列更新,现在回过头来看已经更新了接近 100 篇相关的原创文章,今天对其进行一次阶段性汇总,方便读者查找相关资料和学习。有位大佬说,“这是全网最全的 Android OpenGL ES 教程”,哈哈,对于这种善意的“商业互吹”,当然是欣然接受,
2024-03-14 17:34:15 14
转载 如何移植 JsBridge 到鸿蒙
相信大多数小伙伴的项目都已经有了线上稳定运行的 JsBridge 方案,那么对于鸿蒙来说,最好的方案肯定是不需要前端同学的改动,就可以直接运行,这个兼容任务就得我们自己来做了。关于 JsBridge 的通信原理,在中已经介绍过了,现在主流的技术方案有和两种,我们分别看一下如何在鸿蒙上实现。
2024-03-14 17:30:13 21
转载 如何发布鸿蒙三方库
类似于 Android 项目中的 jar/aar ,鸿蒙肯定也是支持第三方依赖库的。鸿蒙提供了静态共享包和动态共享包两种方式。根据官网的介绍:HAR中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝。HSP中的代码和资源可以独立编译,运行时在一个进程中代码也只会存在一份。看起来 HSP 应该是个更好的选择,但是 HSP 的限制又很多。应用内 HSP 指的是专门为某一应用开发的HSP,只能被该应用内部其他HAP/HSP使用,用于应用内部代码、资源的共享。
2024-03-14 17:25:52 12
转载 Kotlin 技巧:使用序列提高大数据处理性能
因此,它不仅效益低下,而且比必要的工作更多,通过在每一步都制作新的列表,使用了更多的内存。序列一次处理一个元素:它取第一个元素(1),检查它是否是奇数(是),将它平方(1),并检查结果是否大于 10(不是)。当它到达 5 时,通过奇数检查,平方得到 25,由于 25 大于 10,迭代停止。通过使用序列,当定义过滤奇数的操作或定义平方数字的映射操作时,不会有任何计算发生。使用序列,操作不会立即执行。通过使用序列的懒赋值,Kotlin 允许更有效的数据处理,尤其是在可能无需处理整个集合以得到结果的情况下。
2024-03-13 19:14:18 8
转载 Android14 WMS AMS 窗口层级结构生成过程解析
我们从 DisplayContent 的构造函数出发,看一下这棵以 DisplayContent 为根节点的 DisplayArea 树是如何生成的。
2024-03-13 11:07:58 11
转载 布局耗时监测的三种方式,你的选择将决定你的高度
布局渲染的耗时是指从布局文件加载到界面显示完成所花费的时间。通常,我们使用开发者选项中的布局边界线来查看布局渲染的性能情况,但是这种方法并不能准确地反映布局渲染的耗时。因此,我们需要一种更精确的监测方案来定位布局性能问题。通过以上实现方案,我们可以准确监测Android应用中布局渲染的耗时,及时发现并解决布局性能问题,从而提升用户体验。希望本文能帮助到Android开发者更好地优化应用性能。Android布局耗时监测的三种方式,你的选择将决定你的高度。
2024-03-13 10:20:23 16
转载 【Kotlin】类的初始化 ④ ( lateinit 延迟初始化 | ::属性名称.isInitialized 检查属性是否初始化 | lazy 惰性初始化 )
在定义属性时 , 可以使用 lateinit 关键字 设置该属性的 延迟初始化 , 在 实例对象 创建时不进行初始化 , 在使用该属性之前对其进行初始化即可;原文链接:https://blog.csdn.net/shulianghan/article/details/128723902。对于 lateinit 延迟初始化 的属性 , 在使用前可以执行。检查 , 查看该属性是否进行了初始化操作;, 如果不调用 , 则不进行初始化;, 如果忘了初始化直接调用就会报错;的 属性初始化操作 , 需要。
2024-03-12 14:48:21 7
转载 启动优化实践 - 秒开率从17%提升至75%
启动性能是App使用体验的门面,耗时过长会降低用户使用兴趣。对于开发者来说,通过各种技术手段来提升启动性能缩减启动时长,对整站业务的各项指标提升都会有较大帮助。因此,秒开率优化也成为了各个客户端团队在体验优化方向上十分重要的一环。本文将会结合我自己在项目中优化启动速度的经验,跟大家分享下,我眼里的科学的启动速度优化思路。在我的眼里,科学的优化策略是通用的,不管是针对什么性能指标不管是针对什么课题,思路是差不多的。比如这期的分享是启动优化,其实跟上期分享的。
2024-03-12 11:15:12 30
转载 抖音 ANR 自动归因平台建设实践
本文在 2024 年初最新一期『抖音客户端基础技术大揭秘』技术沙龙活动中已做过专题分享,本次将内容重新整理文章进行分享。公众号后台回复技术沙龙可查看沙龙回放及 PPT~抖音作为一个超大型的应用,我们在 ANR 问题治理上面临着很大的挑战。首先对于存量问题的优化,由于缺少有效的归因手段,一些长期的疑难问题一直难以突破解决,例如长期位于 Top 1 的 nativePollOnce 问题。
2024-03-08 15:40:21 27
转载 Kotlin技巧:使用内联函数&单例 避免性能开销
之前讨论了高阶函数,这种函数可以将其他函数作为参数,或者以函数作为返回值。在Kotlin的标准库的Collections文件中,可以找到很多高阶函数的例子。此函数接收一个lambda(匿名函数)作为参数,并对集合中的每个元素调用此函数。要理解inline关键词在其中起的作用,最好的方法是反编译我们的Kotlin字节码并检查其转换结果。在这里请稍微注意一下,你会看到翻译的代码在每次迭代时都调用println()函数。
2024-03-08 10:44:13 15
转载 DeepLink入门指南
以上内容是我针对移动端 Deeplink 方案的总结,针对 Deferred deeplink,自己并未经过完整技术方案的实践,如有不足,欢迎指出!作者:九心链接:https://juejin.cn/post/7341720847880798235来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2024-03-08 10:41:48 203
转载 【车载性能优化】将线程&进程运行在期望的CPU核心上
在介绍之前,需要先介绍一个新概念 -CPU 亲和性。本文介绍了使用动态调节CPU亲和性的方法,原本是我个人用于车载Android应用性能优化的一种尝试,本身带有一定的「实验性」,具体的缺点相信会在以后地运用中进一步显现,所以目前仅供参考。请注意以下两点,第一,如果需要运用在你项目中,切记要与所有的应用开发进行协调,尽可能小规模地使用在一些对性能非常敏感的应用上,防止出现大量应用争抢某个CPU的情况。
2024-03-07 19:23:37 13
转载 鸿蒙迎来纯血版本,你还不来学习一下
本文主要介绍了鸿蒙相关的概念,以及如何上手开发一个鸿蒙原生应用,通过开发一个鸿蒙版的「玩 Android」,带领大家熟悉 ArkUI 和常用 API 的使用,基于开发体验总结了现阶段鸿蒙开发的优势和存在的问题,通过对 hap 包的简单分析了解了鸿蒙运行时的大致轮廓,最后介绍了鸿蒙上的跨平台开发框架 ArkUI-X,希望读完本文对大家有帮助。作者:王晨彦链接:https://juejin.cn/post/7340307629891616808来源:稀土掘金著作权归作者所有。
2024-03-07 16:15:00 54
转载 安卓开发转鸿蒙开发到底有多简单?
相信各位搞安卓的同学多多少少都了解过鸿蒙了,有些一知半解而有些已经开始学习起来。那这个鸿蒙到底好不好搞?要不要搞?安卓反正目前工作感觉不好找,即便是上海这样的大城市也难搞,人员挺饱和的。最近临近年关裁员的也很多。想想还是搞鸿蒙吧现在刚刚要起步说不定有机会!,究竟有多好搞我来给大家说说。最近开始学鸿蒙,对其开发过程有了一定了解。刚好可以进行一些对比。
2024-03-07 11:24:01 61
转载 实现html css富文本解析引擎
自定义Html标签,使得TextView具备更多更强的html解析能力,其次也能自定义标签,并且实现更多css属性样式,整个过程看似复杂,实际上了解了xml或者html解析过程,你就会对控制流更加熟悉。另一个知识点是Android Span标记,我们可以注意到,整个过程打了2次标记,第一次是普通css标记,负责记录css属性值,第二次打上Android Span标记,用于TextView渲染逻辑。
2024-03-06 10:39:54 15
转载 Serializable和Parcelable序列化权威指南
本文围绕与Parcelable展开了一系列高级疑难的面试问题,并提供了详细解答。了解并掌握这两种序列化方式的原理、优劣势以及适用场景对于Android开发者来说至关重要。必读!Android序列化权威面试指南,资深面试者的秘诀。
2024-03-06 10:15:38 14
转载 Lawnchair 2:为您的Android手机带来全新的启动器体验
Lawnchair 2作为Lawnchair项目的进化版本,旨在为用户提供更加个性化和自定义化的启动器体验。相较于市面上其他主流启动器,Lawnchair 2在仿真Pixel Launcher的基础上,加入了更多实用的功能和选项,使用户可以根据自己的喜好定制启动器界面。其出色的性能和稳定性让它成为许多Android手机用户的首选。
2024-03-05 17:42:35 42
转载 稳定性:可远程配置化的Looper兜底框架
假如有一个配置列表,上面描述了所有的需要被保护的异常,当一个异常被抛出时,本地拿着配置的需要被保护的异常列表一个一个的去做比对,如果发现这个异常在我们的配置里,就对其进行保护,否则则让默认的handler去处理,也就是杀掉进程。稳定性不是靠屏蔽问题,而是靠解决问题,当异常无法解决或者解决成本太高,且异常被屏蔽对用户、业务来说并没有啥实质性的影响时,可以被屏蔽,当异常抛出时已经对业务产生了破坏,但是通过保护住然后重试可以让业务恢复运作时,也可以被屏蔽,只是多了个环节,即修复异常。
2024-03-05 13:49:22 18
转载 Android车载开发之AAOS快速入门
在正式介绍Android Automotive OS之前,我们先弄清两个概念:Android Auto和Android Automotive OS。
2024-03-05 11:19:18 30
转载 Kotlin技巧:利用安全调用(?.)Elvis(?:)运算符 &命名参数和默认参数
在Kotlin中,函数可以有多个参数,记住参数的顺序或者仅靠位置理解他们的作用可能会很具有挑战性,特别是对于接受多个参数或者有相同类型参数的函数。:),该运算符提供了一种简明方式来处理在安全调用或任何可为空表达式后的null情况,允许开发者指定一个默认值或替代表达式,以便在前面的表达式评估为null时使用。:)都会简化对null的处理,提高代码的安全性和清晰度。这两个特点同时使用时,会减少对构建者模式的需要,这种模式通常在Java等语言中用来简化构建需要大量参数(其中一些可能是可选的)的对象。
2024-03-01 15:26:45 18
转载 Kotlin 的Triple集合(Triple<A,B,C>)
在 Kotlin 中,三元组是一个代表三个值的组合的通用类。它是 Kotlin 的标准库的一部分,适用于需要返回或处理三个相关值的情况,而不需要创建自定义数据类。三元组可以容纳可能不同类型的三个值,这些值通过 first,second 和 third 属性进行访问。
2024-03-01 15:21:37 33
转载 安卓崩溃排查实战:使用addr2line/objdump/ida反汇编逆向,定位崩溃点
本节我们就进入实战,使用上节的崩溃信息举例:使用到的工具在Android的NDK里面都可以找到,是NDK自带的,至于详细的使用这里就不再赘述。addr2line: 一般我们用来讲崩溃地址转换为源文件、行号等信息objdump: 可以将so文件进行反汇编。ida逆向反汇编神器,好多PJ的软件都是使用它二次制作的。
2024-03-01 10:38:57 174
转载 HarmonyOS一杯冰美式的时间 -- 验证码框
像是短密码、验证码都有可能需要一个输入框,像是如下:恰好在写HarmonyOS的时候也需要写一个验证码输入框,但是在实现的时候碰了几次灰,觉得有必要分享下,故有了此篇文章。🙏 PS:二三为错误示例,如果你只想要代码,在四开始只需要稍微的封装下,将输入框的宽度、高度、圆角、颜色、输入类型、数量等包裹在一个对象中,使用@State修饰,并一一对应应用,即可将这个组件做成一个很标准的任意发挥的输入框啦。唯一的遗憾是,目前没法去除TextInput点击的样式,除非你是纯色(纯色变化看不出来....)
2024-03-01 10:25:30 18
转载 Kotlin技巧:通过标签引用管理Lambda表达式
通过添加numberLoop@标签到外部的forEach lambda,并使用return@numberLoop,清楚地指定我们想要继续外部循环的下一次迭代,而不是完全退出processNumbersWithLabels。通过提供一种清晰明确的方式来指定返回点,标签帮助维护Kotlin代码的可读性和可维护性,Kotlin中的标签引用对于管理嵌套的lambda表达式提供了优雅的解决方案,使得在复杂情况下控制执行流程变得更容易。标签能够标记一个lambda表达式,然后使用该标签明确地引用lambda的范围。
2024-02-29 19:26:46 17
转载 字节开源安卓开发利器-CodeLocator
CodeLocator 插件是一个侧边栏插件, 安装后会在Android Studio的右侧, 点击Tab即可展开插件, 初始状态如下CodeLocator目前支持二十六种按钮操作, 当按钮呈现绿色高亮时表示可点击, 当按钮处于灰色状态时表示不可点击, 鼠标悬停一段时候后会出现具体的功能描述这里介绍一下我自己在使用CodeLocator的一些场景。
2024-02-29 19:24:10 35
转载 探索Android多屏互动技术:构建无缝交互体验
在当前移动设备和智能家居应用中,多屏互动技术已经成为一个备受关注的话题。随着移动设备(如智能手机、平板电脑)和智能家居设备的普及,用户对于多屏协同工作、娱乐和生活体验需求日益增加,多屏互动技术也得到了广泛的关注和应用。多屏互动技术旨在实现不同设备之间的无缝连接和互动,让用户可以在不同屏幕上共享内容、控制设备、实现协同工作等功能。比如,用户可以在手机上浏览一段视频,并将其无线投射到电视上进行观看;用户可以在平板电脑上编辑文档,并将其实时同步到笔记本电脑上进行进一步处理;
2024-02-29 19:16:28 90
转载 AIDL beginBroadcast() called while already in a broadcast问题分析及源码解析
而finishBroadcast方法也有锁,而且锁的对象是当前的容器mCallbacks,所以判断beginBroadcast()和finishBroadcast()是配套使用的。那为什么会出现该问题。1.是因为多个进程clieng同时请求server,其中一个任务阻塞,导致server接收任务的整个通道阻塞,所以会报异常。是因为server在回调client的方法时可能发现异常,导致没有触发finishBroadcast(),所以导致资源没有回收,才会出现问题,建议大家好好review代码。
2024-02-29 16:02:09 34
转载 Linux 网络编程学习笔记——一、TCP/IP 协议族
网络层实现数据包的选路和转发,WAN(Wide Area Network,广域网)通常使用众多分级的路由器来连接分散的主机或 LAN(Local Area Network,局域网),因此通信的两台主机一般不是直接相连的,而是通过多个中间节点(路由器)连接的。网络层的任务就是选择这些中间节点,以确定两台主机之间的通信路径。数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介(以太网、令牌环等)上的传输,不同的物理网络具有不同的电气特性,网络驱动程序隐藏了这些细节,为上层协议提供一个统一的接口。
2024-02-29 13:44:05 16
转载 从原理对比分析,Kotlin中单例模式的5种实现方式
Kotlin提供了多种实现单例模式的方式,每种方式都有其自身的优缺点,大家可以根据实际需求选择合适的方式。无论是懒汉式、饿汉式还是双重检查锁等等,都能够确保在应用程序中只有一个实例存在。从原理对比分析,Kotlin中单例模式的5种实现方式。
2024-02-29 13:34:14 14
转载 Kotlin技巧:使用不变集合&高阶函数
Kotlin在其核心中认识到了可变状态相关的挑战,并通过listOf()、mapOf() 和 setOf() 函数提供了一种简练且优雅的方式来处理不可变集合。Java 9引入了用于创建不可变集合的工厂方法(List.of()、Map.of()、Set.of()),这是一个正确的方向,但是多年来,Java开发者不得不接受冗长或者引入额外的库像Guava来简化不可变集合的创建。这些操作在软件开发中被称为高阶函数,这是一个深深植根于函数式编程的概念,它让开发者编写更灵活、抽象和可重用的代码。让我们来看一个例子。
2024-02-27 19:45:51 15
ormlite-4.48
2014-11-29
jdk-6u45-linux-x64.part2
2013-07-31
jdk-6u45-linux-x64.part1
2013-07-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人