• APK大小缩小65%,内存减少70%:如何优化Android App


    APK大小缩小65%,内存减少70%:如何优化Android App

    我们一直在努力为我们的Android应用程序构建MVP产品。在开发MVP产品后,我们发现需要进行应用程序优化以提高性能。经过分析,我们发现了以下可以改进的应用指标:内存使用、APK大小、CPU使用情况和UI性能。该应用程序主要关注显示高质量的大型图片,从而导致高内存消耗和大型APK大小。

    APK大小

    缩小APK大小是我们在应用优化中的初始重点。这是因为较大的APK大小可能会产生重要影响:

    为什么APK大小很重要?

    存储影响:较大的APK会占用用户设备上更多的存储空间,可能导致与存储相关的性能问题。用户可能会因为其他应用或文件而耗尽存储空间。
    内存使用:较大的APK可能需要更多的内存来加载和运行应用程序。这种增加的内存使用可能会对具有有限RAM的设备造成压力,导致性能问题。
    我们的目标是通过减小APK大小来改善用户体验和应用程序性能。我们将使用APK分析器来确定导致APK大小增加的因素。

    什么是APK Analyzer

    APK Analyzer是谷歌提供的一种工具,用于检查Android应用程序包(APK)的内容。

    https://developer.android.com/studio/debug/apk-analyzer

    APK Analyzer帮助开发人员了解他们的APK文件的组成,包括构成其Android应用程序的资源、资产和代码。
    将APK拖放到Android Studio IDE中以检查其组件。

    初始APK大小约为20.6MB

    Apk缩小体积措施

    1. Proguard规则

    • 通过启用minifyEnabled和shrinkResources标志,并添加ProGuard规则来解决构建错误,我们成功地将APK大小从约20.5MB减小到15.5MB。这表示APK大小减少了25%。

    官方文档:https://developer.android.com/build/shrink-code

    • 尽管我们通过应用规则成功减小了APK大小25%,但从屏幕截图可以看出,77%的大小仍然由资源占据。这表明在减小APK大小方面还有更大的潜力。

    2. 转换PNG为Webp

    将PNG可绘制文件转换为Webp可以显著减小APK大小,通常可以减少60%到70%的资源大小。

    重要提示:

    通过Android Studio的转换过程优化WebP资源相比于直接使用设计师或设计工具(如Figma或Zeplin)的资源效率更高。在APK大小减小方面,结果可能会有所改善。

    选择Webp图像->右键单击->转换为PNG

    转换为PNG后,将所有这些图像转换为Webp。

    选择PNG图像->右键单击->转换为Webp

    这种方法可以显著减小APK大小。

    3. 删除未使用的资源

    随着项目范围的增加,我们可能会添加许多未使用的可绘制资源。删除这些未使用的资源有助于减小APK大小。

    在Android Studio的顶部导航到“重构”,然后选择“删除未使用的资源”。这个操作会显示资源列表。验证每个资源在您的项目中是否被使用,并继续删除已确认未使用的资源。

    4. 添加ResConfigs

    “resConfigs”选项可以控制哪些语言或特定地区的资源包含在您的应用的APK(Android Package)文件中。通过排除与特定语言或配置相关的不必要资源,这个功能对于优化应用的大小非常有价值。

    要在应用的APK中仅包括英文资源并排除其他地区的资源,在应用的build.gradle文件的defaultConfig块内添加以下行:

    defaultConfig {
        // ...
        resConfigs("en")
        // ...
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    如果您的应用支持多种语言,请按如下方式添加语言代码。

    defaultConfig {
        // ...
        resConfigs("en", "de-rDE")
        // ...
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5. 处理应用内资源

    步骤1:为了确保流畅的用户体验,我们在应用内部包含了高质量的图片,以避免外部URL加载时间过长。我们在应用中包含了10张图片,但实际上只使用了其中的5张。通过减少图片数量和存储消耗,我们改善了应用的性能,并消除了在加载图片时出现意外空白屏幕的问题。

    步骤2:对于启动画面,我们最初使用了一段约2MB大小的8秒视频,仅在首次启动应用时显示。为了优化应用大小和用户体验,我们决定将视频剪裁至约800KB大小,使其在有限的使用情况下更加高效。

    6. 字体优化

    我们从多个团队接收到了各种功能的设计,每个设计都有其喜欢的字体,如“Inter”和“Poppins”。使用多个.ttf字体文件会增加应用的大小。为了减小应用的占用空间,我们在整个应用中统一使用了一个字体样式,消除了冗余的字体文件。

    但是,如果您的应用需要多种字体样式,请考虑使用可下载字体。这种方法允许您避免直接将字体嵌入应用中。

    7. Android应用捆绑(AAB)

    Android应用捆绑(AAB)是一种与传统APK相比更高效的Android应用打包格式。AAB包含构建APK所需的所有编译代码、资源和资产,但它们以更优化的方式进行。AAB根据特定的设备配置(如屏幕尺寸、语言等)进行自定义。当用户从Google Play商店下载应用时,商店会动态生成适用于用户特定设备的定制APK,仅包含用户设备所需的资源和代码,从而减小下载大小并优化用户体验。

    结论

    通过上述所有步骤和对应用程序进行一些小的重构,我们成功将APK大小从20.5MB减小到8.3MB ,实现了约60%的APK大小减少。
    尽管APK大小是8.3MB,但根据上面显示的情况,用户只需要下载7.7MB(缩小了约65%)的APK。

  • 相关阅读:
    艾美捷FcyRl (CD64),FCGR1A,生物活性方案
    CompletableFuture之批量上传
    数据分析-Pandas如何观测数据的中心趋势度
    GPT搜索鸽了!改升级GPT-4
    【GO】网络请求例子
    预测评价指标
    Android-Firebase合规问题解决方案-详细攻略,debug模式破解难题
    paddlepaddle 实现AlexNet模型,复现原创论文
    【C语言基础】循环
    ES6 拓展(下)
  • 原文地址:https://blog.csdn.net/u011897062/article/details/133768542