用户体验中APK 的大小是最重要的因素之一。没有用户愿意安装一个非常大的 APK 并在下载该 APK 时消耗他的数据。APK 大小会影响您的应用性能,包括它的加载速度、消耗的内存量以及使用的内存量。在开发时查看您的 APK 大小非常重要。在本文中,我们将了解在 Android Studio 中减小 APK 大小的技巧。

1.删除未使用的来源

APK 的大小取决于非常小的因素,而不是您的应用中使用的代码、图像和资产。要减小 APK 的大小,请删除未使用的源,这将有助于在一定程度上减小 APK 的大小。删除未使用的 APK 源,例如未使用的 png、jpeg 和许多其他资产。小尺寸图像也更适合减小 APK 大小。建议使用矢量绘图而不是其他图像格式,如 JPEG、PNG 等。矢量绘图尺寸很小,矢量绘图的主要优点是即使在增加或减小尺寸后它们也不会失去质量。另外so文件不需要全部集成可以删除多余部分。

2. Vector Drawables的使用

避免使用 jpegs 和 pngs 图像,因为与普通矢量可绘制对象相比,它们消耗非常高的内存。矢量绘图很容易扩展,并且它们的质量不会随着大小的变化而降低。

3. 重用你的代码 

尽可能重用您的代码,而不是重复代码。面向对象编程将帮助您解决这个问题,这也将有助于保持 APK 的大小。重复代码会增加该特定文件的大小,并导致 APK 大小增加。

4.压缩PNG和JPEG文件

在大多数情况下,图像是降低应用内和网站性能的主要目的。因此,最好使用压缩图像来减小其大小并提高应用程序性能。图片的大小也会影响 APK 的大小,因此最好在您的应用中使用压缩图片。您可以使用许多在线平台免费压缩图像。

5. Lint的使用

Lint 是重要的工具之一,它将帮助我们在您的应用程序中获取未使用和重复的代码。因此,此工具将有助于删除重复和未使用的代码。

6.使用WebP文件格式的图片

WebP 是谷歌开发的另一种著名的图像格式。这种图像格式通常侧重于图像质量和优化。与其使用 PNG 和 JPEG 格式的图像,不如使用 WebP 图像格式,因为它的质量更高。

7.proguard的使用

Proguard 在调整 Android APK 的大小方面也起着重要的作用。使用 Proguard 的主要功能如下:

它使应用程序难以进行逆向工程。

它通过删除未使用的类和方法来帮助减小应用程序的大小。

Android App 中的 Proguard 可以在Gradle Scripts > build.gradle文件中找到。

proguardFiles

getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

8. ShrinkResources 的使用

ShrinkResources 方法将显示在 build.gradle 文件中。此方法将删除项目中未使用的资源。您必须通过将其指定为 true 来启用它。你可以在build.gradle 文件 > buildTypes > release > shrinkResources中找到这个方法。选择开启。

9.使用R8减小APK大小

R8 的工作方式与 proguard 类似。R8 收缩是我们减少代码量的过程,这有助于自动减少 APK 大小。R8 使用 proguard 规则并更快地收缩代码,即输出大小。

10.限制外部库的使用

在我们的应用程序中添加许多外部功能时,我们更喜欢使用一些外部库。这些外部库将安装它们提供的类,其中一些类不是必需的,也没有用,它们会消耗存储空间并导致 APK 大小增加。因此最好限制外部库的使用以减小 APK 大小。

11. 使用 Android Size Analyzer 工具

在 Android Studio 中有一个名为 Android Size Analyzer 的插件,该工具将帮助查找我们的 APK 的不同文件消耗的内存量。除了这个 Size,Analyzer 工具还会为我们提供一些有助于减小 APK 大小的提示。要分析您的 APK 大小,您只需单击构建 > 分析 APK选项,然后选择您的 APK。您将看到文件的实际大小以及可下载的大小。借助此工具,您还可以比较以前 APK 与新 APK 的大小。

12. 生成 App Bundles 而不是 APK

Android App Bundle 是一种由 Google 提供的发布格式。它由您的应用程序的代码和资源组成,不同于 APK 生成和签名到 Google Play。Google Play 将处理您的应用程序包,它会根据设备配置为特定设备生成优化的 APK。当您使用 app bundle 时,您不必为不同的设备生成多个 APK 文件。要为您的应用生成 app bundle,您只需点击 Build>Build Bundle(s)/APK(s),然后点击 Build Bundle(s)。将生成您的应用程序包。

13. 使用多个 APK 文件

如果您不想为您的应用程序创建捆绑包,那么您可以选择创建多个 APK 文件的选项。可以使用多个 APK 文件来支持不同的设备类型和不同的 CPU 架构。

14. 减少库大小

如果您正在使用这些库在项目中添加一些自定义视图,那么您可以添加 Google 提供的官方库。通常添加库可以更轻松地在我们的应用程序中轻松添加新功能,但同时它也会影响我们应用程序的大小。最好在构建任何应用程序时减少库的使用。

15. Resconfigs 的使用

在构建 Android 应用程序时,其中存在一些默认资源。我们在设备中使用的所有这些支持库都有其他语言的本地文件夹,我们实际上不在我们的应用程序中。这些文件夹还在我们的应用程序中占用一些内存位置。我们可以使用 resConfigs 删除我们的 APK 中不需要的这些资源,这将有助于将应用程序大小减少一定数量。如果您正在构建一个仅针对特定受众的特定应用程序,并且该受众仅使用特定语言(如英语),那么我们将仅保留英语资源,我们将删除所有其他不需要的语言。

16.删除只需要调试的库

许多开发人员使用一些特定的库来调试他们的 APK 文件。这些调试库也会在我们的 APK 文件中占用一些存储空间。我们可以在我们的应用程序中使用debugImplementation()方法仅在调试时使用这些调试库。因此,这些库将仅在调试时使用,不会添加到您的发布 APK 文件中。

如何在 Android 中减小 APK 大小?相关推荐

  1. android 文本后图标_如何在Android中更改文本,图标等的大小

    android 文本后图标 Let's face it: no matter how good the screens are on our phones and tablets, the text ...

  2. 如何在android中创建自定义对话框?

    本文翻译自:How to create a Custom Dialog box in android? I want to create a custom dialog box like below ...

  3. Android如何减少apk大小

    因为推广的需要,公司需要把APK的大小再"减小"一下,4M以内! 当达到4M以内之后,公司建议说,能否再压压?2M如何? 瘦身前 因为平时就考虑到大小的限制,所以很多工作已经做过了 ...

  4. android 显示进度,progressdialog-如何在Android中显示进度对话框?

    progressdialog-如何在Android中显示进度对话框? 当我单击"登录"按钮时,我想显示ProgressDialog,这需要时间才能移动到另一个页面. 我怎样才能做到 ...

  5. 如何在Android中使用emojicon库集成表情符号, 妈妈在也不用担心我的表情了~~~

    如何在Android中使用emojicon库集成表情符号 最全最专业的emojicon库教程. 在本教程中,我们将学习如何通过一个简单的示例在Android应用程序中使用emojicon库集成  表情 ...

  6. 如何在Android中打开/关闭相机LED /手电筒

    在本教程中,我们向您展示如何在Android中打开/关闭手机摄像头或手电筒. 查看代码段: 1.开启 camera = Camera.open();Parameters p = camera.getP ...

  7. android apk 的信息,Android中获取apk基本信息

    一 PackageManager可以获得的所有包节点信息: 1,所有节点的基类:PackageItemInfo: 2,PackageInfo:package的全面信息,与AndroidManifest ...

  8. android 定时器5秒执行一次,如何在android中每30秒执行一次查询?

    我有一个查询,我想每30秒执行一次并将其记录到Logcat.我是通过处理程序完成的,我没有得到回应.如何在android中每30秒执行一次查询? 这里是我的代码: runnable = new Run ...

  9. 让一个图片填满一个控件_如何在Android中实现一个全景图控件(二)

    一.背景 在 如何在Android中实现一个全景图控件(一)中,介绍了项目的一些基本情况(有 demo 演示),如果项目对你有帮助,希望文章赏个赞,项目 star 一下. 项目地址:https://g ...

  10. android view gesturedetector,如何在Android中利用 GestureDetector进行手势检测

    如何在Android中利用 GestureDetector进行手势检测 发布时间:2020-11-26 16:15:21 来源:亿速云 阅读:92 作者:Leah 今天就跟大家聊聊有关如何在Andro ...

最新文章

  1. CISCO 组播RPF 逆向路径转发 实验原理
  2. PL/SQL程序设计(一)—— PL/SQL程序设计简介
  3. php空间限制磁盘限额,ORA-01536:超出表空间XXXX的空间限额
  4. Java 9:流API的增强
  5. a的n次方的最后三位数c语言,求13的n次方(12n≤130000000000)的最后三位数,用c++编程...
  6. Python创建进程、线程的两种方式
  7. [ES6] 细化ES6之 -- 迭代器与生成器
  8. 大年30还多少天_大美鹅老李告诉你30天的鹅需要多少温度?
  9. wordpress 调用css,WordPress调用CSS最常用的方法有哪些?
  10. RabbitMQ之路由选择
  11. (五)ThinkPHP实践之Session驱动-TTLSA
  12. lspci -tv description
  13. EdgeRouterX配置option43使用华为AP连接远程AC的方法
  14. 关于kindle mobi词典解析
  15. 5G时代车联网的通信协议——C-V2X
  16. 实现手机扫描二维码登录
  17. 学计算机去二本大学分数线,分数线最低的二本大学
  18. 阅读软件怎么添加书源_【看书听书】两款神器软件,我已深深的为之折服了
  19. RHCSA 核心考点列表
  20. Vue - 判断终端是否为:IE内核、opera内核、苹果、谷歌内核、火狐内核、是否为移动终端、ios终端、android终端、是否为iPhone或者QQHD浏览器、是否iPad、是否微信、是否QQ

热门文章

  1. 一文帮你理解 Google SRE 体系
  2. python调用迅雷下载引擎_GitHub - cryzlasm/ThunderOpenSDK: 迅雷开放下载引擎, 收集, 使用...
  3. android 入门教程速成,Android入门基础教程(小白速成1)
  4. 未对销售组织 XXX 分销渠道 XX 语言 ZH 定义
  5. pandas按照多列排序-ascending
  6. matlab中的小于等于,ps中如何画出小于等于符号
  7. 聊聊我在腾讯和字节工作感受
  8. Vue中v-model和checkbook的使用
  9. 历史记录html页面,HTML5 history 页面历史记录
  10. IDEA查看历史记录