Android 开发工程师自述:2年的开发,我总结了7条经验
yuyutoo 2025-01-13 18:58 3 浏览 0 评论
全文共3547字,预计学习时长11分钟
“纸上得来终觉浅,绝知此事要躬行。”
“没有调查就没有发言权。”
“实践出真知。”
古今中外,无数名言警句都告诉我们实际去做一件事的重要性。
笔者从最初对安卓开发萌生兴趣到现在已有两年之久了,期间做过几个项目也开发过别的,今天就跟大家分享一下这段时间里笔者亲身总结的7条经验。
1.第三方库:找到正确的平衡点
在开始第一个项目时,所有的操作笔者都想从零开始,然后几乎是把第三方库打入了冷宫,本想着自己可能以这种方式会学到更多的东西。
兴许是第一个项目,不用第三方库也行,但这通常是不可取的。最后无非是浪费大量的时间“造轮子”(指业界已有公认的软件或库),所以千万别这样。
有了第一次的经验,笔者开始使用开源库。任何情况下都会有免费的库,这点非常好。所以就添加了一个库,结果根本停不下来。
猜猜后来怎样了?笔者的项目到最后就是杂七杂八的第三方库扭为一体。所以及时止损吧,好好选库。不是所有的都靠谱,况且不一定好上手。
笔者的建议就是寻找平衡点。如果在开发的过程中遇到难题,而这个难题恰巧是别人用某个库完美解决的,那就这个库没错了。要是需要HTTP客户端,选它—— Retrofit。
如果下载和管理的图像很多的话,就用 Glide,这些库绝对好用,还稳定,谁人都知道。
但记住不是所有的库都会这么美好。最好每次都查查这些库出自何方神圣,有时间的话再研究一下开源代码,看看问题是如何解决的。
Android Arsenal几乎动用了所有可用的安卓库来维护大型数据库。
2.从一开始就选对架构
你听说过类似于MVC、MVP、MVVM这样的缩略词吗?它们代表不同的软件架构,而且都是需要了解的。
很多小白是在activity类中敲代码,刚开始这样似乎行得通,但相信我,这件事没这么简单。
项目越大,代码就会越复杂还高度耦合,使得后续的测试、维护、新功能的研发变得非常棘手。
所以才推荐大家从一开始就选用一目了然的软件架构。如上文提到的这些架构各有千秋,下面是迄今为止谷歌推荐的App架构:
从图中可以看出,每一个部分仅由下部与其相连的组件决定。
这样就会带来一致的用户体验,不仅考虑到了关注点分离(separationof concerns),还针对测试和可扩展度进行了优化。很显然,任何架构都有不完美的时候,就像谷歌说的一样:
根本不存在一个架构能满足任何软件的情况。言外之意,对于大多数软件和工作流,从一开始就使用推荐的架构会是好的开端。
由于不是本文的重点,笔者不会对该架构展开过多的解释,但会给大家列举一些有用的资源:
l app架构的指南
l 安卓架构组件的基础样本
3.重要的事情说三遍:测试测试测试
你曾多少次想过:“在手机上测试app,发现成功了!”
其实并不够,简单的测试可能会在开发时让你少费几天功夫,但做起来可就要搭上好几周的时间了。
产品发布前,做足测试可以帮助我们检查系统的鲁棒性、操作性以及可用度。
那该如何测试app呢?这个问题可就太宽泛了,测试类型五花八门,各个都有自己的使命。
在了解上图的基础上,可以将测试分为以下三类:
l 单元测试:一次使用一个类来验证性能类别。
l 集成测试:验证模块内不同层次堆栈间的交互以及相连模块的交互。
l UI测试:验证用户界面和用户流
基于app的用例,需要自行决定进行多少种不同测试。
谷歌的经验法则建议---将测试分为70%的小测验(单元测试),20%的中等测试(集成测试)和10%的大型测试(UI和端到端测试)。
l 在安卓平台上测试应用:这里讲了测试应用所需的所有东西
l 在安卓上测试驱动开发(TDD):Google I/O 2017的关于TDD的视频会议
4.Android Studio ,我们的好伙伴
无可厚非,我们已经利用了IDE(集成开发环境),但真的其物尽其用了吗?
Android Studio里内置了很多有助于软件开发的工具,下面列举了一些笔者最常用到的:
l 设备模拟器可以对不同设备上、各种安卓版本的应用程序进行测试。
l 安卓PK分析器可以通过对APK大小的检测分析出程序的大小。
l 实时性能分析器(Realtime Profilers)可以对CPU、内存和网络使用情况进行实时统计分析。
l Firebase助手可以将应用程序与其联系起来,只需几步操作即可将所有Firebase服务都添加上。
l Vector Asset Studio可以帮助给每个密度(密度指磁盘存储数据的可用空间)创建新的位图图像。
你知道Android Studio还有一个功能是将PC变成“烤炉”吗?
5.简单清晰的用户界面(UI)
如果在一家大型企业当安卓开发员,UI和UX的设计就是设计者的事了,程序员们大可不必担心。
不过要是初创企业或是私人项目,可能就得费些心思设计UI和UX。相信我,好的界面会锦上添花,而糟糕的界面会毁了一个好项目。
“用户界面就跟笑话一样,你若解释它,就证明它还不够好。”——马丁·勒布朗(Martin LeBlanc)
过去笔者常犯的一个错误就是用户界面上放的东西太多,元素过多只会给用户带来困扰,还会让别人觉得没有美感。建议大家从简,简单且清晰。
特别是不擅长设计的人更要避讳这一块,尽量做用户一看就懂的基础界面。成形后可以进行改进使其更美观,这样用户会留下更深的体验印象。
记住通过不同大小的显示器和DPI来测试UI,不要用固定的测量单位,比如px;多用动态的单位,比如用dp(或测试文本的sp)。
l Dribbble:里面汇集了各路神仙,不知道从哪下手,可以在这上面寻找灵感。
l 材料设计语言(Google Material Design):该系统适应性强,为设计最佳用户界面提供了指导、组件和工具系统。
l 《设计心理学》(The Psychology Of Everyday Things):唐·诺曼写的这本书讲了日用品的可用性设计,值得一看。
6.发布清单(Release Checklist)
现在觉得自己的应用程序可以发布了?真的吗?你怎样肯定呢?这个时候,千万不可草率行事,最好问自己几个问题:
l 是否移除了所有纠错代码?
l 测试足量吗?
l 在构建Gradle时,是否更新了名称和版本代码?
l 是否启用了Proguard 来混淆APK代码?
l 是否对应用程序进行了本地化操作?
l 是否在Google Play上准备了开发者账户?
如果答案都是“嗯”,那就可以继续自己的计划了。笔者建议大家做一个Android App Bundle (aab)来优化应用程序的大小和资源,而非APK。
在 Google Play发布应用程序后,要不断查看用户的反馈和所有的分析数据。这对程序的改进有非常大的帮助。
这是安卓开发员提供的检查清单,不容错过。
7.要用Git
Git是版本控制系统(VCS),它最基本的两大作用:一是追踪文件的变动,二是简化由多个开发员参与的大型项目中的工作。
我也不知道自己为何会用Git,其实直接给项目进行备份也可以。——来自三年前的我
现在笔者知道了。
并且告诉大家:程序员们需要Git,它对工作流的帮助简直妙极了。(这句话要是三年前有人跟我说就好了)。
Git妙在何处?理由如下:
l 资源代码安全地储存在云端,随用随取。
l 所有以往的代码版本都可使用,可以检测旧版本,而且出现错误时可以回到以前的版本。
l 团队工作得到了简化。每个开发员都可以在并行分支上进行工作,有需要时合并更改。
l 能开发数以千计的开源项目。
l 有GitHub和BitBucket这样的平台,创建并展示自己项目的介绍也可以实现。
理由千万条,而笔者希望这些足以传递一条信息:认为自己不需要Git,是错的。
GitHub和BitBucket指南帮你上手Git
今天,笔者分享了一些自己在安卓开发期间亲身学到的东西,但肯定有更多的知识有待探索。
如果大家有其他宝藏级建议,尤其是适合初学者的,请在下方踊跃留言哦。
留言点赞关注
我们一起分享AI学习与发展的干货
如转载,请后台留言,遵守转载规范
- 上一篇:OPPO Android 开发技术面总结
- 下一篇:精准测试二三谈
相关推荐
- 建筑福利-pdf转dwg格式转换器,再也不用描图-极客青年
-
作为一名经常熬夜画图的建筑狗或者cad用户,你体验过pdf图纸描图到cad吗?前几天一个老同学找我,说他的毕业设计需要我帮忙,发给我一份pdf图纸文件,问我怎么把pdf图纸转换成dwg格式。机智的我灵...
- 想学 HTML,不知从何入手?看完这篇文章你就知道了
-
很多人都说HTML是一门很简单的语言,看看书,看看视频就能读懂。但是,如果你完全没有接触过,就想通过看一遍教程,背背标签,想要完全了解HTML,真的有点太天真了。HTML中文...
- 「前端」HTML之结构
-
今天继续为大家分享前端的知识,如果对前端比较感兴趣的小伙伴,可以关注我,我会更大家继续分享更多与前端相关的内容,当然如果内容中又不当的或者文字错误的,欢迎大家在评论区留言,我会及时修改纠正。1.初识H...
- 手把手教你使用Python网络爬虫下载一本小说(附源码)
-
大家好,我是Python进阶者。前言前几天【磐奚鸟】大佬在群里分享了一个抓取小说的代码,感觉还是蛮不错的,这里分享给大家学习。...
- 用于处理pdf文件格式的转换器
-
在上传过程中如果单个文件太大则容易中断,而且文件太大的话对与存储也有些弊端。那么我们应该想到将文件进行压缩(注意这里压缩指的是不改变文件格式的压缩,而不是用变成压缩文件。这里就将以下用专门的软件压缩P...
- 乐书:在线 Kindle 电子书制作和转换工具
-
之前Kindle伴侣曾推荐过可以在Windows和Mac系统平台上运行的kindle电子书制作软件Sigil(教程),用它可以制作出高质量的的ePub格式电子书,当然最后还需要通...
- 付费文档怎么下载?教你5种方法,任意下载全网资源
-
网上查资料的时候,经常遇到需要注册登录或者付费的才能复制或者是下载,遇到这种情况大多数人都会选择重新查。...
- 捡来的知识!3种方法随便复制网页内容,白嫖真香呀
-
网上的资源真的多,所以许多人常常会从网上找资料。我们看到感兴趣的内容,第一时间可能会想要收入囊中。比如说截个图啊,或者挑选有意思的句子复制粘贴,记录下来。可是,有些时候,却会遇到这样的情况:1、内容不...
- AI的使用,生成HTML网页。
-
利用deepseek,豆包,kimi以及通义千问,写入相同的需求。【写一个网页,实现抽奖功能,点击“开始”,按键显示“停止”,姓名开始显示在屏幕上,人员包括:“张三”,“里斯”,“Bool”,“流水废...
- pdf转换成jpg转换器 4.1 官方正式版
-
pdf转换成jpg工具软件简介pdf转换成jpg转换器是一款界面简洁,操作方便的pdf转换成jpg转换器。pdf转换成jpg转换器可以将PDF文档转换为JPG,BMP,GIF,PNG,TIF图片文件。...
- 办公必备的office转换成pdf转换器怎么用?
-
2016-02-2415:53:37南方报道网评论(我要点评)字体刚从校园走出社会,对于快节奏的办公环境,难免会觉得有些吃力。在起步阶段力求将手头上的事情按时完工不出错,但是渐渐的你会发现,别人只...
- 为什么PDF转Word大多要收费?
-
PDF转Word大多都要收费?并非主要是因为技术上的难度,而是基于多方面的商业和版权考虑的,下面给大家浅分析下原因:...
- 如何用python生成简单的html report报告
-
前提:用python写了一个简单的log分析,主要也就是查询一些key,value出来,后面也可以根据需求增加。查询出来后,为了好看,搞个html表格来显示。需要的组件:jinja2flask...
- 学用系列|如何搞定word批量替换修改和格式转换?这里一站搞定
-
想必不少朋友都会碰到批量修改word文档内容、压缩文档图片、文件格式转换等重复性文档处理工作的需要,今天胖胖老师就推荐给大家一个免费工具XCLWinKits,一站搞定你所有的需要。什么是XCLWinK...
- 这款PDF文档转换神器,能帮你解决PDF使用中的许多难点
-
不管是平时的学习还是工作,相信许多朋友都经常接触PDF文件。可以说,PDF文件在我们的日常办公学习过程中的重要性和Word文档一样重要。在之前的更新中,小编介绍了几款非常不错的PDF文档格式转换软件,...
你 发表评论:
欢迎- 一周热门
-
-
前端面试:iframe 的优缺点? iframe有那些缺点
-
带斜线的表头制作好了,如何填充内容?这几种方法你更喜欢哪个?
-
漫学笔记之PHP.ini常用的配置信息
-
其实模版网站在开发工作中很重要,推荐几个参考站给大家
-
推荐7个模板代码和其他游戏源码下载的网址
-
[干货] JAVA - JVM - 2 内存两分 [干货]+java+-+jvm+-+2+内存两分吗
-
正在学习使用python搭建自动化测试框架?这个系统包你可能会用到
-
织梦(Dedecms)建站教程 织梦建站详细步骤
-
【开源分享】2024PHP在线客服系统源码(搭建教程+终身使用)
-
2024PHP在线客服系统源码+完全开源 带详细搭建教程
-
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)