安卓开发人员必看的一些经验总结和忠告

2017年11月2日10:08:00 发表评论 21 views

我还记得2010年的那一天,当时我决定开始Android开发这是我人生中最明智的决定之一。距离现在已经有六年半的时间了,我在Android开发中学习了很多东西。最初开始的时候,我没有一个导师,也没有人指导我学习Android开发。在这过程中犯了很多错误,导致花费了很多时间去纠正这些错误。

一年半以后,我有幸和一些真正有才华、经验丰富的Android开发人员合作,他们指导我,帮助我以更好的方式来做事情。这两个阶段虽然很艰难,但都让我学到了很多东西。学会了什么该做,最重要的是什么不该做。

在这篇文章中,我将分享我在这几年收集的一些宝贵经验。或许可以帮助你更快速的学习安卓开发,少走之前我走过的那些弯路:

1、不要重复造轮子

最初,我不太喜欢使用开源库。无论我需要什么,只想着自己做。现在想来这真是个愚蠢的做法。

当你在开发过程中遇到了问题,如果这个问题已经被其他人解决了,那么为什么不使用它呢?这样你可以为自己节省很多时间。

更多地关注应用程序的核心业务逻辑。如果你想在你的应用程序中进行网络调用,你不需要自己写,可以使用开源库。

2、明智地选择开源库

Github有很多开源库可免费使用,但也别盲目使用。

检查开源库的星号数,越多越好。查看该开源库的作者是否也创建了其他受欢迎的开源库。检查Bug问题(打开和关闭)的解决,这可以让你更好地了解该库的稳定性和健壮性。

如果你有足够时间,你应该深入了解该开源库的代码,并检查是否真正适用自己的项目。

这样做只是为了确保你将要使用的代码是可靠的、无bug和高质量的。

建议:尝试使用Dryrun从命令行直接使用任何库。

3、读更多的代码

我们的大部分时间都是在阅读别人的代码而不是写自己的代码。如果你没这样做,那就从今天开始吧。

你今天能写的任何代码都只是因为你在某个地方阅读并学习了某项技能,这是你已经获取该项技能的反映,所以你只有通过阅读和学习他人的代码来提高自己。

Android的一大优点是它是一个完全开源的平台,深入了解代码并学习它们是如何实现框架的,Github有成千上万的开源库,选择一个库,看看开发人员是如何实现它的。这对你将有很大帮助。

4、保持适当的编码标准

如果将编码与写作进行比较,那么编码标准就像你的笔迹。

正如你会阅读其他人的代码一样,别人也会阅读你写的代码,如果你在一个公司工作,需要和其他开发者有合作,请特别注意你的这点。

编写简短、清晰和可读的代码,让你和阅读你的代码的人能够彻底享受。你的代码应该像故事一样阅读。

5、请使用ProGuard!

ProGuard不仅可以减少你的代码,还会使你的代码模糊,从而加大反编译的难度,不好复制你的代码。而且它完全免费,并附带了Android SDK,没有理由不使用它。

我看到一些开发人员在没有ProGuard的情况下在市场上发布他们的应用程序,这样破解这样的App 对于一个不太熟练的黑客也只需花几个小时

6、使用合适的项目架构

首先,你会庆幸自己选择了合适的架构

你可以使用MVP(model - view - presenter)体系架构,它可以将代码解耦到不同的易于管理的层,从而提高代码的灵活性,大大减少维护时间。这里有一个很好的演示项目让你学习。如果你觉得很难学,这里是初学者的详细指南。

7、用户界面设计UI考虑

如果你只是纯Android开发人员的角色,那么你不需要太担心这一点,因为有UI / UX设计师来做这个。

但是,如果你是独立开发人员,则需要考虑UI。我看到过很多开发人员开发了许多非常好的应用程序,具有很好的功能,但是UI看起来很丑,而UI使开发人员很苦恼。

设计一个干净、简单、美观的界面,这样容易吸引眼球。你不应该像开发人员那样思考,而是应该专注于点燃你内心隐藏的设计者。

试着设计一个漂亮的UI来给你的用户留下持久的印象,这样他们就会比其他人更频繁地回到你的应用程序,并且产生更多的转换(也许是买你的高级版本)。

你应该从你的设计中删除元素,做减法,而不是添加元素,保持简洁和最小状态。

8、分析是你最好的朋友

如果你想开发一个热门的应用程序,你需要大量依赖分析工具来分析应用程序不同部分的性能和使用情况。通过崩溃报告和应用程序使用情况来进行分析跟踪。

无论你做什么,你永远可能不会做的完美。当用户开始使用你的应用程序,你可以使用分析工具进行跟踪用户使用情况。

崩溃报告工具可以帮助你跟踪和修复它们。

你也需要像营销人员一样思考,分析应用的不同模块的使用情况,这将帮助你减小你所做的app和用户需求之间的差距。

建议:使用Firebase崩溃报告和分析工具

9、成为营销者

如果你是一个独立的开发人员,你必须超越“仅仅是一个开发者”的想法,并且还要理解营销。我看到一些好的产品由于缺乏适当的市场营销而失败,而那些不那么好的产品因为市场营销而大获成功。

如果你想要吸引大量用户,则需要投入时间和金钱来营销推广你的应用。但在开始你的营销活动之前,请确保应用程序绝对稳定,所有功能已经完善。你肯定希望花费的每一分钱都能得到最大的推广效果,不是吗?

建议: 推荐一个经济实惠的市场分析工具,我很喜欢使用。(https://sensortower.com/)

10、优化你的APP

这是我们大多数人通常不会去做的事,但这确实需要做。

编写代码和编写高性能代码有很大的区别,你应该编写能够快速运行,占用更少的内存并减少设备存储空间的代码 。

一个未优化的APP在正常情况下运行良好,但是当处于不同的压力情况时,就可以显示出它的真实面目。

检查应用程序使用的内存数量,并查找内存泄漏。记住,一个微小的泄漏就可以让你的应用崩溃。花时间了解垃圾收集器如何在Java中工作,创建堆转储并分析活动对象。

建议: 使用leakcanary检测你的内存泄漏。可以节省大量时间

11、使用 Gradle 每周至少节省5小时

你很有可能正在使用Android Studio开发Android应用程序,并使用Gradle作为构建。Gradle是很好,但是很慢,当你的项目开始不断变大,它比蜗牛还慢。

记得无数个小时,被我浪费了,只是坐着等Gradle构建完成。每个工作日,我都要容易浪费大约一个小时,只要使用Gradle来构建,每周就要浪费5个小时。 但是,也有办法加快速度。

可以按照这个和这个帖子来提高构建速度,优化后构建时间从4分钟下降到不到30秒。

12、测试测试,再测试!

没有什么比测试更重要。这应该放在你的工作首位。

尽可能彻底地测试你的应用程序,花时间编写自动测试用例,为应用创建各种压力情况,看APP是否能够撑住。

我曾经犯过一个错误,就是匆忙地发布我的应用程序,并没有花时间充分地测试,最后用户使用过程中发现bug并报告,然后我再去修复它们。

永远不要小看测试,没有测试可能能够替你节省一两天甚至一周时间,但是过后你可能需要花双倍的时间来解决因为没有测试导致的一系列问题。

13、Android碎片化问题

碎片是Android中最大的问题之一,Google似乎不愿意修复它,你必须接受。

有各种各样的Android设备,具有不同的屏幕尺寸和硬件规格,来自不同设备制造商,他们将操作系统定制到自己的设备。除此之外,Google添加/删除API功能的各种Android版本无法进一步增加工作量(这里是一个例子)。

例如,没有一个Android开发人员在没有使用SharedPreferences API的情况下完成了一个应用程序。这是很常见的,但它在三星Galaxy S与Android 2.2(错误报告在这里)被打破了。

花更多时间为不同的屏幕尺寸创建不同的布局。在不同的设备,具有不同的版本,不同的规格和不同的OEM上测试。

14、请开始使用Git!

如果您还没有使用Git,那就现在开始使用吧。

当我开始Android开发时,我不知道Git是什么软件。我曾经每天复制我的整个项目,并在我的硬盘驱动器和在云盘各保留一个备份。做法好像很愚蠢?确实是这样。

Git可以显著提高开发效率。如果有人要求我说一个我每天使用的工具,我会说Git、Git、Git。
也许在使用它几天后,你会爱上它,并想知道Git的工作原理, 一段时间后,你将自己开始一个大型项目,并对如何维护正确的分支模型感到困惑,那么你可以去这里了解。(http://nvie.com/posts/a-successful-git-branching-model/)

15、使黑客很难破解

Android的开源性质使其易受攻击。每个Android应用程序都可以反编译,反向设计,轻松打开。

你不想让你的APP发生这样的事情吧?

你应该知道如何在你的应用程序中安全地存储API密钥,如果你正在处理用户敏感数据,那么必须知道如何加密,可以选择 什么算法(安全而快速)。

你还应该将加密密钥安全地存储在服务器或本地(如果需要)中。应该使用ADB(Android Debug Bridge)来防止应用数据备份。如果将敏感数据存储在数据库中,请考虑对其进行混淆。

当你的应用程序有一个高级版本,被破解并且免费发布后,这样损失可就,可以做几件事来防止应用被篡改。其实没有什么100%的安全。任何熟练的有决心的黑客,当拥有丰富的资源、工具和耐心都可以破解你的应用程序。

建议:你可以阅读这个,可能成为保护你APP好的开始(https://www.airpair.com/android/posts/adding-tampering-detection-to-your-android-app)

16、在低端设备开发

每个人都喜欢使用高端的Android智能手机,我也一样。但请记住,仅供个人使用,不要用在开发上。

高端设备在开发应用程序时会隐藏很多漏洞。假设你在UI线程中做了一些事情,导致出现卡顿问题,但是在一个强大的设备上,你可能永远不会注意到这个问题。

一个老式的低端设备,被大量的应用程序抛弃,这也使它成为开发设备的最佳选择。

17、投资学习学习这是一辈子的投资

在开发大而复杂的应用程序时,你将面临一些常常遇到的问题,这些问题可能其他人已经解决,你需要学习他们的解决方式。

从现在开始花一些时间来学习Java设计模式。这是一个Github项目

(https://github.com/iluwatar/java-design-patterns)演示了所有已知的设计模式。

接着学习最重要的一些单例,如适配器,工厂方法,迭代器,依赖注入,事件驱动架构,构建器,回调,策略,门面和生产者消费者。好像看起来十分繁多?其实不是, 一旦你深入,你就会开始爱上他们。

18、不要吝惜回馈

我们都曾经从网络或者身边人那里获得过帮助,无论何时遇到问题,我们做的第一件事就是是Google,并从StackOverflow中找到第一个链接。有时候你很匆忙,你最终复制并粘贴了最高选票的答案。

就连Github上,大大减少你开发时间和工作量的免费开源库,也都是因为有人创建了它,并贡献在GitHub。

你给的越多,你得到的回报越多。 我已经分享了在Android开发这个短暂的旅程中学到的一些东西。我也会继续下去,学习更多,分享更多。我希望它能帮助到一些人。

  • yiisaa
  • 这是我的微信扫一扫
  • weinxin
  • zhengweiqiangcom
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: