如何优化应用程序开发

你好 我叫Andrey,我是Genesis Media的一名Android开发人员,为非洲的媒体业务创建应用程序。 该大陆在Internet上的价格非常昂贵,主要的移动设备是低功耗的Android智能手机,因此,我会尽力使我们的产品变得更容易。

本文包含针对我们使用的新兴市场优化应用程序的最佳实践。 将此指南视为适合初学者的指南。

公司有兴趣将其产品带给新的受众。 例如,在印度,只有三分之一的人口连接到互联网,而在尼日利亚,则有一半。 这样的潜力消失了! 因此,大型公司的开发人员专注于为新兴市场优化应用程序。



主要问题:

  • 具有少量RAM的设备
  • 屏幕较小或分辨率较低的设备
  • 昂贵的互联网
  • 互联网连接不稳定
  • 操作系统的旧版本


关键决定


最小化应用程序大小


在拥有昂贵的互联网和低功耗设备的市场中,这场斗争实际上超过了兆字节。 是否下载应用程序取决于大小。 Opera开发人员为他们的应用程序仅占用8 MB感到自豪。 为了使我们的产品引以为傲,我们找到了七个解决方案。

  • 最小化库数。 首先,我们删除了多余的库,然后决定总体上放弃第三方库。 它们简化了开发人员的工作,但是出于几个方便的功能,连接整个库是不合理的。 因此,我们独立描述每个项目需求的逻辑。 当然,这需要更多的时间,更多的代码,但是会大大减少应用程序的大小。
  • 不要将具有类似功能的库保留在依赖项中。 当不可避免地使用图书馆时(例如创建广告),请查看它们包含在其中的图书馆。 也许您应该抛弃心爱的人,转而支持已经存在于另一个人中的那个人。
  • 使用浅色图像。 应用程序模块的资源(图片等)通常占用最多的空间。 减少它们。 这比找出从现在开始缩小的位置容易。

为此,我们开始使用矢量图像-它们由简单的几何形状组成,这就是为什么它们在表面上可理解且占用空间很小的原因。 您可以添加一个矢量,而不是五种不同显示格式的标准图片包。 它会在不损失质量的情况下更改大小。 缺点-图像应该很简单。 您可以在矢量中绘制复杂的图片,但这不是最佳选择,因为它仍然很重,而且会长时间加载。

如果图片很复杂,我们使用WebP。 这是一种Google压缩格式,可让您将图片的权重降低近10倍。

船长理事会:与设计师协同工作。 最初,创建一个简单的产品,使其不必进行技术改造。

  • 混淆代码。 我使用Proguard实用程序,但还有其他选择。 除了将代码转换为无法读取的状态外,它还能识别并删除未使用的资源,从而对其进行优化。
  • 使用平台资源。 例如,Android有一个内部类可绘制对象,它使您可以在系统内部绘制简单图像,而无需向资源中添加任何内容。 设置创建元素的逻辑,将在加载图形界面时自行绘制。
  • 重用资源。 例如,不同颜色的重复图片不能存储为两个副本,而可以存储为一个彩色滤镜。 在寻找这样的优化选项时,您将花费时间,但是为了保持最小的应用程序量是值得的。
  • 当每个用户的元素不是由开发人员而是在PlayMarket中收集时, 请使用App Bundle (应用程序组装的类型)。 由于平台知道用户设备的类型并打包了一个合适的映像选项,因此可以优化大小。 PlayMarket声称它有助于将应用程序的大小减少30%。 适合那些不想打扰以前的选择的人。
  • 优化界面的显示速度 -这与硬件较弱的用户有关。 通常,用户界面被强加在xml文件中-与代码中的布局相比,这是方便且快速的。 这并不总是对UI呈现时间有良好的影响,尤其是在较弱的设备上。 如果您在代码中设置布局,则可以稍微加快此过程。 这样可以节省将xml布局转换为代码的时间。 或者,您可以使用AsyncLayoutInflater类使此过程异步。 也许总体渲染速度不会提高,但是至少它将使用户界面响应速度更快(滞后,缓慢)。


流量使用优化


缺少互联网不是错误,而是应用程序的状态。 而且您需要能够与他正确地合作。 用户必须有权访问信息-让他查看,阅读和最大程度地显示所有信息。 不要寄回。

  • 数据缓存。 节省非洲的交通量非常重要-值得在黄金中占有一席之地。 因此,一旦用户打开新闻提要,所有信息都应被缓存。 当Internet丢失或有人离开时,进入应用程序,内容将不会再次加载。
  • ETag。 重装数据是一种低意识的用户习惯,在低成本的Internet中您不会注意到,但是在新兴市场中它的成本很高。 ETag逻辑分析哈希数据并仅更新更改的信息,或发送“内容未更改”的请求,重量不超过1 Kb。 建议将其添加到查询逻辑中,该查询逻辑可以返回大量数据。
  • 禁用图片。 因此,用户可以阅读新闻,但不会在下载图片上花费流量。 他可以随意单击以“打开它们”,但不会自动将其拉起。


合计


这些是帮助用户节省流量和设备空间的主要方法。 尽量不要将在后台运行的服务添加到应用程序中,但这仅在对所有先前要点进行了首次优化帮助之后。 仅此而已。 我希望这些材料对您有用。

Source: https://habr.com/ru/post/zh-CN481378/


All Articles