Android技术探索的一次实践之旅

全栈若城
全栈领域优质创作者
博客专家认证
2023-05-15 10:19:51

简介

谷歌于北京时间2023年5月11日凌晨1点,在海岸线圆形露天剧场举办了一年一度的 Google I/O 大会,并进行了现场直播。和往年一样再次席卷了科技界的关注,为大家带来引人瞩目规划和成果。也为带来了大家期待已经的Android 14。下面随小编来看看此次Android 14为大家带来了那些全新的功能和体验吧

在发布会上谷歌介绍了Android 14新增加了两项功能:锁屏时钟、快捷方式和设备查找等等,这些功能都成为了本次 Android 14 版本更新的主要亮点。

Android平台的架构和工作原理

Android系统采用了五层架构:Linux内核层、硬件抽象层、运行时库层、应用框架层和应用层。每一层都有其独特的功能和职责,使得各部分可以高度内聚并低耦合地工作。

在Linux内核层,为Android提供硬件驱动访问接口和进程管理,与标准Linux内核进行了裁剪和修改以适配移动设备。

硬件抽象层将底层硬件的差异隐藏在内部,为更高层次提供了统一的接口。它由多个库组成,每个库对应一类硬件。

运行时库层包括各种支持库,如WebKit、FreeType和OpenGL等,用于提供网页、图像、3D渲染等能力,使用C/C++实现,但Java也可以调用这些库。

应用框架层是应用程序与底层硬件之间的接口层,提供Activity Manager、Package Manager、Telephony Manager等服务来管理应用生命周期、资源、电话服务等。开发者主要使用Java语言开发,并调用这些框架。

应用层是最上层的层次,为用户提供各种应用程序,比如Contacts、Browser和Settings等,供用户直接使用。

产品新功能体验

最新发布的Android版本带来了很多新功能。手势操作取代虚拟按键,通过向内/外滑动返回/切换应用,带来更流畅的用户体验。不过,初始使用需要一定的适应期。除此之外,Project Mainline还可以使系统更快地更新修复Bug,确保应用更兼容且开发更简单。新增的数据控制和隐私增强功能也非常有用。

人工智能功能是这个版本的亮点之一。通过机器学习,它可以预测用户的下一个动作,并提供更丰富的搜索结果信息。这些功能可以大大提高用户的体验,但对于预测不准的情况,用户也需要进行适当的调整。电池优化功能也很重要,它可以减少CPU唤醒,从而节省电量。然而,这可能会影响实时性和推送效果,需要在用户与开发者之间共同努力以找到平衡点。

通知分组功能可将信息更聚焦在一起,让用户更轻松地管理信息。但值得注意的是,这些更改可能会影响实时性和推送效果,需要开发者采取更精细权衡,兼顾用户需求与系统限制。其他新增的功能例如实时字幕、智能回复支持更多场景等也为用户带来很大的便利。

综上所述,新功能都带来了很多好处,但也需要用户与开发者之间的努力与适应,以确保最佳体验和效果。用户需要花费一些时间熟悉新功能,同时,开发者也需要及时更新应用适应新功能。

 故障调试 

Android应用的故障和错误排查是开发过程中不可避免的一部分。常见的故障包括应用崩溃、布局异常、网络请求失败和应用卡顿等。为了准确地找到问题原因,并迅速修复它们,开发者可以采用以下调试工具和技巧:

  1. 通过adb logcat读取崩溃日志,查找堆栈信息定位问题原因。常见原因是空指针,数组越界等。

  2. 使用Hierarchy Viewer检查布局,定位显示问题组件,修复布局Bug。

  3. 检查网络状态,域名解析,通过Chrome Postman等工具测试请求,验证接口及参数。

  4. 通过Traceview与Systrace检查执行时间过长的方法,查找效率低下或ANR的原因。

除此之外,还有一些常用的调试技巧和工具可以帮助开发者更快速地解决应用故障,比如:

  1. 打开调试模式,设置断点调试与检查变量,定位逻辑问题。

  2. 使用adb工具获取屏幕截图、日志、检查设备参数等,辅助定位与复现Bug。

  3. 输出详细日志,记录调用栈与异常信息,在出现问题时能够更加准确地定位问题原因。

  4. 将日志级别设置为Debug输出更详细日志。

  5. 使用gradle构建时开启Proguard混淆,Release版本去除,方便调试。

  6. 使用Hierarchy Viewer预览与分析布局,检查嵌套深度,定位显示异常组件。它可以在不同设备上渲染布局。

  7. 借助Traceview与Systrace分析应用执行时间与ANR问题,查找低效率原因。

  8. 使用Chrome开发者工具的Device Mode调试与测试WebView应用。

经验和教训:开发者需要熟练使用各类调试工具,如日志、断点、adb、Hierarchy View等。这可以大幅提高定位与修复问题的效率。同时,开发者要养成测试与日志输出的习惯,在开发阶段就最大限度地发现并解决问题,减少上线后Bug出现的可能。解决问题需要使用对应的工具,例如布局异常使用Hierarchy Viewer,ANR使用Traceview与Systrace,逻辑Bug使用调试模式等。遇到问题时不应轻易放弃,要通过查询资料与尝试各种办法进一步判定与缩小问题范围;有时问题的解决需要综合多种手段与条件。

测试结果分析

为了保证软件质量,开发中需要采取不同的测试方法和工具进行评估和比较,包括单元测试、功能测试、压力测试和 beta/灰度发布等。在自动化测试和UI测试方面,最佳实践是集成自动化测试到开发阶段,如单元测试,及时发现问题并减少回归测试量;编写功能测试脚本进行自动化,确保核心业务流质量;使用UI测试脚本测试各种界面交互与操作流畅性,并检查界面显示是否正确无误;在发布 beta/灰度版之前,使用自动化工具进行性能、安全和兼容性测试,发布更稳定版本;测试团队应编写全面的测试计划和方案,而开发者也应编写单元测试和进行本地测试,以最大限度地发现Bug。这些措施可以提高测试效率和软件质量,提供更好的用户体验。

建议 

为了提高软件质量,测试报告和错误统计是必不可少的工具。它们可以分析问题的类型和频率,找出软件缺陷并提出改进对策。在多国和多设备上进行兼容性测试也是必要的,以便修复可能出现的问题。用户反馈也是最真实的反馈。通过不断听取和修复用户反馈,可以完善软件。但是,由于时间和成本的限制,无法实现全部场景的自动化测试。因此,需要人工创建特定的测试用例和数据,进行真实操作测试。开发人员也应当测试他们自己编写的代码,而不仅仅依赖于测试团队的测试报告。只有在代码编写阶段就解决问题,才能减少后续的回归测试成本。总之,测试工作需要开发团队和测试团队通力合作,多种测试手段配合使用,才能全面保证软件质量。

心得 

一 :从用户角度

  1. 流畅性:应用的打开速度和界面切换是否流畅,没有明显卡顿现象,响应是否迅速。这些会对用户的体验产生深刻的影响。

  2. 易用性:应用的界面布局是否清晰易理解,功能是否易于查找与使用,是否需要过长的适应与学习期。这些将决定用户的获得感与粘性。

  3. 功能完备:应用是否符合该类应用的功能预期,是否提供更加丰富更能满足用户需求的功能,新增功能是否紧跟行业发展与用户需求。

  4. 隐私与安全:应用是否会收集过多与隐私相关的数据信息,这些信息是否有保障措施与使用限制,应用自身是否具备一定的安全机制与防护措施。

  5. 体验连贯性:由同一开发团队开发的应用,在界面风格、交互方式、功能结构上是否保持连贯与统一,让用户产生一致的体验感与预期。

二:个人使用Android应用的体会:

掌握应用核心功能和使用技巧,定制通知、关闭不必要服务,使用第三方应用增强系统功能并保持桌面整洁,定期清理缓存和删除无用应用与文件等可提高Android用户体验。

...全文
108 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,400

社区成员

发帖
与我相关
我的任务
社区描述
加入“谷歌开发者”社区,一起“共码未来。
android 企业社区
社区管理员
  • 谷歌开发者
  • 开发者大赛发布
  • 活动通知
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧