你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

android开发最新实践(译文)

2021-11-21 22:19:12

此文翻译自Amit Shekhar(MindOrks公司)的博文Android Development Best Practices,供大家参考。
原文链接:
https://blog.mindorks.com/android-development-best-practices-83c94b027fd3

我们来一起研究下Android应用开发的一些最佳实践。

对于初学者来说,当你开发一个Android应用的时候,你需要兼顾到各种各样的设备以及运行环境。

每台Android设备本身都是一个整体,如果哪个模块出现了问题,那么其他的部分也会受到影响。

当一个应用申请内存的时候,如果此时没有空闲内存可供分配,系统会杀掉一些进程。当用户返回这些被杀进程应用的时候,应用会重新启动。

如果某个应用占用过多的内存、CPU、GPU,或者过于耗电,其它的应用也会深受其害,这回导致用户体验下降。因此,性能很重要。如果你想要学习Android性能相关的知识,请点击这里。

Beware of little expenses. A small leak will sink a great ship.  — Benjamin Franklin

以下就是一些你在构建Android应用时候应该遵循的最佳实践。

1. 使用推荐的Android框架

如果一开始没有遵循代码准则,没有使用任何框架的话,随着应用功能的不断增加,你将会面临以下问题:

  • 难以添加新功能
  • 引入很多bug
  • 开发进度变慢
    如果遵循一定的代码规范并在写在工程中采用一些框架的话,以上问题可以避免。以下链接是以下有关Android框架的学习资源:
    MVP Architecture
    MVVM Architecture
    Mastering Design Patterns in Android with Kotlin

2. 不断维护代码质量

代码质量非常重要。不仅涉及到MVP/MVVM/MVC等框架,还涉及到整个应用代码的方方面面。请点击链接关于Android代码风格和指南。

3. 发现并修复内存泄漏问题

检查资源并发现和修复内存泄漏问题:

Practical Guide To Solve OutOfMemoryError in Android Application
Detecting and fixing memory leaks in Android

4. release 版本要使用代码混淆

使用代码混淆之后,会移除无用代码,这样可以减小APK的体积。Android代码混淆点击这里。

5. 使用调试工具

我特别推荐使用Android Debug Database。Android Debug Database库用来调试和直接浏览查看Android的应用数据库和 shared preferences,简单使用,功能强大。Build Analyzer Tool也值得关注。

6. 使用strings.xml

string资源是比较有用的,尤其是当应用要长期维护,特别是有多语言需求的时候。

7. 尽量复用布局

创建独立的布局文件,在xml文件中使用include标签来引用。另一个方便的标签是merge,它可以移除不必要的容器。

8. 将launcher 图标放置在mipmap目录下

9. 多使用shape和selector

尽量使用shape和selector,少使使用image,使用减小APK体积。

10. 避免layout层级过多

布局层级越深,不仅会导致布局难以控制,更会导致UI变慢。采用正确的ViewGroup可减小布局层级,比如约束布局(Constraint Layout),相关学习资源如下链接:

  • Part -1
  • Part -2

10. 使用HTTP 库

根据你的具体情况,使用HTTP三方库,比如Retrofit或者Fast Android Networking。

11. **尽量使用Parcelable,而不是Serializable **

使用Intent或者Bundle传递数据的时候,尽量使用Parcelable,而不是Serializable。通过实现Parcelable接口来实现序列化要比Java默认的序列化快很多。实现Serializable接口的类的对象是可序列化的,而Java的实现采用了反射(使得其比较慢)。而采用Parcelable接口的时候,整个对象不会自动序列化,而是用户可以选择性地将对象的数据添加,当反序列化的时候可以将添加的对象数据取出来。同样地,在Kotlin中也可以使用Parcelable。

12. 不在UI线程进行IO操作

文件操作应该总是运行在后台线程中,比如使用RxJava或者Kotlin协程。文件操作比较耗时,如果在主线程执行会让人感觉应用反应迟钝。如果在主线程耗时超过5秒钟,就会使得应用发生ANR,并给用户弹出警示窗口。

12. 充分理解Bitmap

由于Bitmap很占内存,可能会导致OOM。用户喜欢内容,尤其是排列有序、观感优美的内容。比如图片,一张图片胜似千言万语。但是图片非常耗内存。点击这里了解更多。学习在Android中Glide或者Fresco框架如何加载图片。

13. **充分理解Context **

了解Android中的Context到底为何物。正确使用Context可以避免内存泄漏。点击这里了解更多。

14. 使用style

在布局中,杜绝重复设置属性,可以采用style。

15. 正确对待Activity 生命周期

学会如何正确使用Activity 生命周期,就能够解决Android开发中遇到的大部分问题。点击这里了解更多。

16. 单元测试

应用开发中最重要的就是单元测试。我建议在JVM上跑单元测试,比在Android设备或者模拟器上运行要快很多。测试的时候如果需要mock一些对象,请使用Mockito。 使用依赖注入框架(Dagger)可以使得测试更加简单。

17. UI功能测试

功能测试是从用户的角度来测试应用的功能。如果你的应用不和其他的应用交互,那你可以使用 Android Instrumentation;否则,请使用UIAutomator 。

18. 优化构建速度

构建工程慢的话,会拖慢你的开发速度。点击这里,了解如何优化构建速度。

19. 关注应用安全方面

应用可以被反编译、逆向工程。尽最大努力让应用变得安全是每一个开发的责任。应用只有安全了,才能获得用户的信任和保证设备的完整性。点击这里了解如何让应用变得安全。

20. 让应用没有bug

应该一直把崩溃报告库(例如 Firebase Crashlytics)集成到应用之中。要具备分析crash报告的能力。

21. 使用成熟框架

一般来讲,使用成熟框架而不是自己的解决方案。

22. 适配所有设备

不要只适配某台设备。

23. 在不同的系统版本上测试

在不同的系统版本上测试你的应用。
And again, finally, keep testing on various OS versions.

所谓赠人玫瑰手有余香,如果你喜欢这篇博文,可以分享给别的伙伴。