醒醒,Android开发居然只有cv最顺手,你还会什么?

一笑奈何 提交于 2020-01-29 08:49:11

作为一个Android开发,现在的你已经开发多少年了?

你的代码质量有没有随着经验的增加而提高?没有的话就需要反思了。

现在来分享一个有六年经验Android开发,都学到了什么?

一,学习能力
想要成长,学习能力尤为重要

我们一直有句老话,学如逆水行舟,不进则退。就像我们Android进阶,需要学习的高级内容比较多

1)Java语言进阶与Android相关技术内核
像 泛型,多线程,反射,JVM,Java IO,注解,序列化等

2)App开发框架知识体系(app亦对象)
Android 2013~2016年的技术,大家网上Copy代码习惯了
对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道,天天在复制这些代码;陌生的是虽然天天和这些代码打交道,从未深入研究过这些代码的原理,代码深处的内涵。

我们需要从新的角度去分析这些知识点,深入研究他们,要学习源码,模仿源码,然后再hook源码,

这样才能说自己懂这块的知识。这些都是做Android开发,做高级工程师的基础。
3)360° Android app全方位性能调优
书写高性能代码,再调优

4)Android前沿技术
比如热升级,热修复,App Instant,强制更新,组件化路由架构Arouter,RxJava,IOC架构方法,Hook技术等
这些技术你不能只会用,你需要知道他的原理

5)NDK 模块开发
NDK,其中的关于C/C++,jni,Linux基础都是需要学习的,除此之外,音视频的编解码技术,流媒体协议,ffmpeg这些都是音视频开发必备技能,而且OpenCV/OpenGl/ 这些又是图像处理必备知识

6)提高开发效率的工具运用
想要提高开发效率,需要用工具,这个下文说了下

7)移动架构师专题项目实战环节
学了技术就需要结合项目进行实战训练

8)移动架构师不可不学习微信小程序

9)混合开发flutter
flutter现在已经逐渐变成了主流的混合开发框架,另外由于阿里系的强大存在,导致阿里 系的公司都在用Weex混合架构,这些都是一个Android工程师开拓视野,走向未来必不可少的基本技能

二,善加利用Android Studio
Android Studio 提供了最快的工具,可以为每种类型的 Android 设备构建应用程序。

不幸的是,我们仅探索了该IDE的一小部分。Android Studio附带了许多工具,以下是我们在日常开发中应使用的各种工具。

Visual Layout Editor在这款Layout Editor中,我们可以将UI元素拖到可视化设计编辑器中,并以此来快速构建布局,同时无需手动编写布局XML。

这款设计编辑器可以在各种 Android 设备和版本上预览布局,而且你还可以动态调整布局的大小,以确保在各种屏幕尺寸上正常工作。当你使用这款Layout Editor构建新布局时,尤其能感受到其强大之处。

APK Analyzer我们可以利用 APK Analyzer 减少花在调试应用程序内DEX文件和资源问题上的时间,而且还可以减小APK的大小。

此外,你还可以在命令行中使用 APK Analyzer 。APK Analyzer 的功能包括:

  • 查看APK中文件的绝对大小和相对大小,例如DEX和Android资源文件。

  • 了解DEX文件的组成。

  • 并排比较两个APK。

Fast Emulator如果你需要应对各种版本的 Android, 而且还希望在各种 API 级别上测试你的应用,那么这款模拟器甚至比真正的设备还好。

这款模拟器提供了Android设备所具备的所有功能。你可以模拟打电话和发短信、指定设备的位置、模拟不同的网络速度、模拟旋转和其他硬件传感器、访问 Google 应用商店等等。

与在物理设备上的测试相比,从某种程度上来说,在模拟器中测试应用程序更快捷、更方便。

ProfilersAndroid Profiler工具提供了实时数据,可以帮助你了解应用使用CPU、内存、网络和电池资源的情况。

虽然我们有各种的分析器,例如CPU分析器、内存分析器、网络分析器和能耗分析器。但 Android Profiler 可以兼容Android 5.0(API级别21)及更高版本。

你可以使用 Android Studio 中的高级事件探查器来监视应用会话消耗CPU资源和内存的状况。内存探查器可以帮助我们使用Leak Canary调试内存泄漏。

三,配置构建变化

你可以使用构建变化为你的应用创建不同的版本,还可以正确管理依赖项和签名配置。 大多数组织都有测试和生产环境。

如果想针对每种环境构建不同的应用程序,你可以利用不同的构建类型指定不同的基本URL。


你还可以根据API级别或其他设备变化,为不同的设备构建应用程序的不同版本

四,使用 Lint Checks 改进代码

这个 lint 工具可以帮助你找出结构不良的代码,而这些代码可能会影响应用程序的可靠性和效率。

Lint会告诉你布局中是否存在占用大量空间的命名空间。

它还告诉你其他结构性的问题,例如使用了弃用的元素或目标API版本不支持的API调用。

它还会建议你使用所有库的最新版本。使用新的 SparseArray(…) 代替 HashMap,可以获得更好的性能。SparseArrays 会将整数映射到对象。

与普通的对象数组不同,下标间可能存在间隙。它比使用 HashMap 将整数映射成对象的效率更高。

五,测试应用程序

测试驱动的开发(TDD)是确保你会测试每一行新代码的一种方法。

如果采用这种方式,那么在编写要实现的代码之前,你需要为添加的内容编写测试。由于时间和资源有限,大多数创业公司可能不会采用测试驱动的开发环境。但是它已被许多公司广泛接受。


Android 有三种类型的测试。
1.单元测试单元测试用于测试方法和小模块。无需模拟器或真实设备即可运行这些测试,因为它们可以在JVM上运行。JUnit 和 Robolectric 是流行的 Android 单元测试框架,可以在JVM上快速运行测试。

2. 设备测试设备测试依赖于Android 框架。由于这种依赖性,你需要模拟器或物理设备才能运行这种测试。我们使用 Mockito 模拟设备测试中使用的对象。

3. UI测试我们可以利用UI测试活动的启动是否正确,或视图的存在是否正确。Espresso和UI Automater 是UI测试中广泛使用的工具。以下是应用当前所包含测试的软件包结构。

Test:单元测试都保存在这个文件夹中。这些测试在JVM上运行,不需要 Android 设备或模拟器。

Android test:所有设备和UI测试都保存在这个文件夹中。这些测试需要 Android 物理设备或模拟器才能运行。

六,使用版本控制

Git 和 BitBucket 是最常用的版本控制系统。

版本控制可以跟踪文件的改动,可以记录完成的操作,并且可以根据需要恢复特定版本。

但给你与团队一起工作时,版本控制有利于协作,而且还可以将所有的更改合并到源代码中。如果没有版本控制,则你需要进行备份,并将代码存储到安全的地方。

有了Git以后,代码就安全了。你可以跟踪更改,还可以针对某次发布维护多个代码库。它可以简化两个人一起工作时合并代码的工作。此外,你也可以利用Git展示你的工作,并向许多开源项目贡献代码。

Git已成为许多公司筛选人才的地方,因为他们可以通过Git查看候选人的工作成果和个人项目。

七,发布产品的知识
无论你是否是将新版本发布到生产环境的主要负责人,我都建议你掌握将应用发布到应用商店的方法。

掌握使用密钥存储文件对APK进行签名的方法。记下你的密钥库密码和别名。

你甚至可以在Gradle文件中配置它们,以简化签名过程。

八,使用 Crashlytics

Crashlytics 是最强大,最轻便的应用崩溃报告解决方案。

Crashlytics 提供了深刻且可付诸行动的见解,甚至包括应用崩溃时确切的代码行号。

你可以使用 crashlytics 来减少识别故障和修复故障的时间。

此外,它还提供了各种分析报告,例如出现频率最高的崩溃,崩溃百分比等等。

Crashlytics 还包括 Crashlytics Beta,该服务可以让你轻松地将预发行的 iOS 和 Android 应用分发给测试人员,以便快速获得反馈。

九,选择正确的架构
如果你是从头开始开发应用程序,那么就会有许多优势。其中之一就是选择正确的体系结构。

通常,我们喜欢将所有内容都写在同一个activity文件中,因为这样做很容易。

但是,当你的代码量增多时,这就会成问题。你的代码库会变得十分庞大,每个文件包含的代码行数也会非常庞大。考虑到代码的性能和维护,在早期阶段选择正确的体系结构,才是明智的做法。

MVC、MVP、MVVM和MVI等许多体系结构可帮助 Android 开发人员轻松维护、测试和开发新功能。

上图说明了在设计完应用程序后,所有模块应如何相互交互。尽管这完全取决于你的组织,但你也有可能会有机会选择适合应用程序的体系结构。但是,强烈建议你选择适合需求的特定体系结构。关于哪种架构最好这个话题也是众说纷纭。

根据开发人员指南:“没有任何一种方法能够编写出适用于每种情况的最佳应用程序。话虽如此,对于大多数情况和工作流来说,这种推荐的体系结构都是一个很好的起点。

十,学习能力
作为一个Android开发,看完之后得希望可以给你点启发,顺便点个赞给我点鼓励,关注我会经常分享。

你有什么经验,也可以在文下分享,毕竟咱们程序员很多都是开源的,众人拾柴火焰高。

看完之后很多朋友询问我的学习内容,那我也来分享一波,内容比较多,先把图放出来大家看一下

详情了解就看这里 学习内容大全

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!