编译Android APP---30条经验帮你提升
Contents
- 添加任何第三方库时都要三思而后行,因为这是一个非常严肃的决定。
- 如何用户无法看到它,不要去绘制它!
- 除非你真的需要,否则不要使用数据库。
- 65k方法限制非常容易遇到,你可以通过multidexing 来修复它。
- RxJava 是用来取代异步操作AsyncTasks 的最佳替代方案。
- Retrofit 是最佳的网络库。
- 通过Retrolambda 缩短你的代码
- 组合RxJava、Retrofit和Retrolambda 以实现最大化利用。
- 我使用EventBus ,它非常伟大!但是我并没有大量使用,因为大量使用会导致代码复杂度提高。
- 通过功能分包,而不是层次。
- 把任何事情都从应用的线程中移除。
- lint 你的视图去帮助你优化布局和布局的层次,以便于你辨认哪些视图是多余的、可移除的。
- 如果你使用gradle,你可以加速它!
- 生成你的编译报告 ,看看花费的构建时间;
- 使用一个众所周知的架构;
- 测试需要花费时间,但是一旦你掌握了它之后,将会获得比未测试更加快速和健壮的代码。 ;
- 使用依赖注入 ,让你的应用更模块化并且更容易测试;
- 收听fragmented podcast 对你来说是有用的。
- 不要使用你的个人电子邮件作为你的android市场出版商账户;
- 总是使用适当的 输入类型;
- 使用分析来找出使用平台和隔离缺陷;
- 掌握新库 的状态(可以通过使用dryrun 来快速测试)
- 你的底层服务应该做它们需要做的事情,并且尽快的销毁。
- 使用Account Manager 去建议登录用户名和邮箱地址。
- 使用CI(持续集成)去编译和分发你的
beta
和production
的apk。 - 不要经营你自己的CI服务器,因为维护服务器包含磁盘空间/安全问题/更新服务器以免受到SSL攻击等等。应该使用circleci,travis或者shippable。它们便宜并且少一点担心。
- 自动化部署到playstore。
- 如果一个库非常大而你只需要使用其中一个小功能子集。你应该找到一个更小的替代方案。(例如依赖proguard )
- 除非实际需要,不要使用更多的模块。如果模块不是经常修改,需要考虑到的重要问题是:从头编译它们所需要的时间(CI 的编译是一个很好的例子),甚至检查以前的各个模块的构建是否最新的,比起简单的加载.jar/.aar库时间要增加几乎4倍。
- 开始考虑为了svg格式放弃png格式;
- 为库创建抽象类,如果你仅仅需要一个开关去简单的切换到一个新的库(例如AppLogger.d(“message”) 能够包含 Log.d(TAG, message)),而后意识到Timber.d(message) 是一个更好的选择。)
- 监视活跃连接和连接类型(当处于WIFI时有更多的数据更新?)
- 监控电源和电池(充电时更多的数据更新?当电池电量低时暂停更新?);
- 用户界面就像是一个笑话。如果需要去解释它,它不是那么好;
译自:https://medium.com/@cesarmcferreira/building-android-apps-30-things-that-experience-made-me-learn-the-hard-way-313680430bf9#.1lb3hoh97