Android 项目必备(二十三)-->减小 APK 大小

在这里插入图片描述

没有用户愿意下载大型 APK,因为它可能会占用他的大部分网络/Wifi 带宽,最重要的是,移动设备内的空间。

APK 的大小会影响应用的加载速度、使用的内存量以及消耗的电量。

优化应用程序的大小很重要,因为手机始终是内存和空间受限的设备。那么,在 Android-Development 中我们可以通过哪些方式来提高我们的 apk 大小呢?让我们继续在本文中学习。

了解 Android App Bundle

Android App Bundle 是一种发布格式,包含您应用的所有编译代码和资源,并将 APK 生成和签名推迟到 Google Play。
Google Play 使用您的 app bundle 为每个设备配置生成和提供优化的 APK,因此只下载特定设备所需的代码和资源来运行您的应用程序。您不再需要构建、签署和管理多个 APK 来优化对不同设备的支持,并且用户可以获得更小、更优化的下载。

Android App Bundles - 文件定位和服务

  • 这些 Android 应用程序包对文件定位有何帮助?很简单,假设我们的应用程序中有 hdpi、xhdpi、xxhdpi 资源。根据正在下载应用程序的设备,如果它是 hdpi 设备(例如),则只会在设备上安装来自 hdpi 的资源。
  • 如果应用程序针对多种语言(英语、西班牙语、法语等),则只会将特定的字符串资源下载到设备上。
  • 这有助于节省设备内存的空间。

构建 Android App Bundle
构建 Android 应用程序包非常简单。只需从 Android Studio 菜单中选择 Build 选项,然后选择 Build Bundles

优化

安装插件
了解哪些文件实际上在应用程序中占用了更多空间,请使用 Android Studio 中的 Android Size Analyzer 插件。用于安装插件

  1. 选择File > Settings(或在 Mac 上,Android Studio > Preferences。)
  2. 选择左侧面板中的插件部分。
  3. 单击市场选项卡。
  4. 搜索“Android Size Analyzer”插件。
  5. 单击分析器插件的安装按钮。

安装插件后重新启动 IDE。现在,要分析应用程序,请从菜单栏中转到分析 > 分析应用程序大小。

删除未使用的资源
apk 的大小会影响应用程序的加载速度、使用的内存量以及消耗的内存功率。因此,可以实现以减少 apk 大小的主要事情之一是删除应用程序中未使用的资源。
此外,建议使用可缩放的可绘制对象(导入矢量资源)而不是其他图像格式,如 PNG、JPEG 等。
使用 Vector Drawable 是显着减小尺寸的最佳方法之一。

使用 Lint
Lint 实际上有助于在应用程序内生成警告或未使用的代码。因此,这实际上可以帮助删除它们,从而有助于减小应用程序的大小。

减少库大小
检查在使用库时是否可以减小大小。例如,仅使用特定的 Google Play 服务库。只编译需要的。

重用代码
面向对象编程解决了编程世界中的很多问题。尽量重用代码而不是重复代码。重复代码还会导致文件大小增加,从而影响 Apk 大小。

压缩 PNG 和 JPEG 文件
如果在您的项目中必须使用 PNG 和 JPEG 文件,您可以使用 TinyPNG 等图像质量工具对其进行压缩。

在大多数应用程序中,图像用于传达信息或改善用户体验。但是这里最大的缺点可能是使用了大量的图像,这会增加应用程序的大小。在将应用程序发布到 Play 商店之前,确保了解并实施图像压缩技术以减小 apk 的大小。

使用 WebP 文件格式
正如我们在上面为 Android Analyzer 插件共享的图片中看到的,其中一项建议是将 PNG 文件更改为 WebP 文件格式。

使用 Proguard
每次我们构建一个新项目时,我们都会在应用级的 build.gradle 文件中看到如下一段代码

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

ProGuard 对我们的项目产生以下影响,

  • 它减小了应用程序的大小。
  • 它删除了导致 Android 应用程序的 64K 方法计数限制的未使用类和方法。
  • 它通过混淆代码使应用程序难以进行逆向工程。

收缩资源
尽可能减少资源。在 Gradle 中使用shrinkResources属性将删除项目中任何地方未使用的所有资源。通过添加以下行在您的应用程序级 build.gradle 文件中启用此功能:

buildTypes {
    release {
        ........
        shrinkResources true
        ........
    }
}

资源配置
使用resConfigs删除不需要的本地化资源。所有支持库都可能具有我们不需要的其他语言的本地化文件夹。

Gradle 资源收缩器仅删除您的应用代码未引用的资源,这意味着它不会删除不同设备配置的替代资源(特定于设备/位置)。如有必要,您可以使用 Android Gradle 插件的resConfigs属性来删除您的应用不需要的替代资源文件。

以下代码段显示了如何将语言资源限制为仅英语和法语:

android {
    defaultConfig {
        ...
        resConfigs "en", "fr"
    }
}

如前所述,拥有未使用的语言资源只会增加 apk 的大小。因此,删除未使用的文件和资源很重要。

使用 R8 减小 APK 大小
R8 缩减是我们减少应用程序代码量的过程,通过这样做,APK 大小会自动减小。R8 作为 Proguard 完成大部分工作。为什么我们需要更喜欢它?原因是它适用于 Proguard 规则并在提高输出大小的同时更快地缩小代码。

最后,有什么比在我们的应用程序中理解和实施这些步骤来为我们的客户提供优化的 apk 更好的了!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kevin-Dev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值