加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

如何在10分钟内让应用大小减少60%?

发布时间:2019-07-20 04:35:41 所属栏目:业界 来源:小房子
导读:一个APP的包之以是大,首要包罗一下文件 代码 lib so当地库 资源文件(图片,音频,字体等) 瘦身就首要瘦这些。 一、打包的時候刪除不消的代码 buildTypes{ debug{ ... shrinkResourcestrue//是否去除无效的资源文件(假如你的Debug也必要瘦身) } release{ .
副问题[/!--empirenews.page--]

一个APP的包之以是大,首要包罗一下文件

  • 代码
  • lib
  • so当地库
  • 资源文件(图片,音频,字体等)

瘦身就首要瘦这些。

一、打包的時候刪除不消的代码

  1. buildTypes { 
  2.  debug { 
  3.  ... 
  4.  shrinkResources true // 是否去除无效的资源文件(假如你的Debug也必要瘦身) 
  5.  } 
  6.  release { 
  7.  ... 
  8.  shrinkResources true // 是否去除无效的资源文件 
  9.  } 
  10.  } 

二、镌汰不须要的打包

  1. defaultConfig { 
  2.  ... 
  3.  //打包的说话范例(语种的翻译) 
  4.  resConfigs "en", "de", "fr", "it" 
  5.  //打包的文件夹 
  6.  resConfigs "nodpi", "hdpi", "xhdpi", "xxhdpi", "xxxhdpi" 

可能

  1. android { 
  2.  ... 
  3.  splits { 
  4.  density { 
  5.  enable true 
  6.  exclude "ldpi", "tvdpi", "xxxhdpi" 
  7.  compatibleScreens 'small', 'normal', 'large', 'xlarge' 
  8.  //reset() 
  9.  //include 'x86', 'armeabi-v7a', 'mips' 
  10.  //universalApk true 
  11.  } 
  12.  } 

三、lib

只管不消太伟大的lib,轻量级lib是首选。假如你的应用没用到兼容库,可以思量去掉support包。

四、资源文件

我们可以通过Lint器材找到没有行使的资源(在Android Studio的“Analyze”菜单中选择“Inspect Code…”)

五、把现有图片转换为webP

我们可以通过 智图 可能isparta将其余名目标图片转换成webP名目,isparta可实现批量转换。

六、图片相干

在Android 5.0及以上的版本可以通过tintcolor实现只提供一张按钮的图片,在措施中实现按钮反选结果,条件是图片的内容一样,只是正反选按钮的颜色纷歧样。

  1. Drawable.setColorFilter( 0xffff0000, Mode.MULTIPLY ) 

在Android 5.0及以上的版本,可以行使VectorDrawable和SVG图片来替代原有图片

七、夹杂

1 构建多个版本

在gradle中的buildTypes中增进差异的构建范例,行使applicationSuffix和versionNameSuffix可以天生多个版本在统一装备上运行

建设src/[buildType]/res/配置差异的ic_launcher以区别差异版本

2 夹杂参数

  1. {  
  2. debug { minifyEnabled false }  
  3. release {  
  4. signingConfig signingConfigs.release  
  5. minifyEnabled true  
  6. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'  
  7. }  

minifyEnabled true

  • 是否要启用通过 ProGuard 实现的代码压缩(true启用)
  • 请留意,代码压缩会拖慢构建速率,因此您应该尽也许停止在调试构建中行使。

注:Android Studio 会在行使Instant Run时停用 ProGuard。

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

getDefaultProguardFile(‘proguard-android.txt')要领可从 Android SDKtools/proguard/文件夹获取默认 ProGuard 配置。

提醒:要想做进一步的代码压缩,可实行行使位于统一位置的proguard-android-optimize.txt文件。它包罗沟通的 ProGuard 法则,但还包罗其他在字节码一级(要领内和要领间)执行说明的优化,以进一步减小 APK 巨细和辅佐进步其运行速率。

proguard-rules.pro文件用于添加自界说 ProGuard 法则。默认环境下,该文件位于模块根目次(build.gradle文件旁)。

要添加更多各构建变体专用的 ProGuard 法则,请在响应的productFlavor代码块中再添加一个proguardFiles属性。譬喻,以下 Gradle 文件会向flavor2产物风味添加flavor2-rules.pro。此刻flavor2行使全部三个 ProGuard 法则,由于还应用了来自release代码块的法则。

每次构建时 ProGuard 城市输出下列文件 dump.txt 声名 APK 中全部类文件的内部布局。mapping.txt:提供原始与夹杂过的类、要领和字段名称之间的转换。seeds.txt:列出未举办夹杂的类和成员。usage.txt:列出从 APK 移除的代码。这些文件生涯在/build/outputs/mapping/release/。

要批改错误并逼迫 ProGuard 保存特定代码,请在 ProGuard 设置文件中添加一行-keep代码。譬喻:

  1. -keeppublicclassMyClass 

您还可以向您想保存的代码添加[@Keep]

(https://developer.android.com/reference/android/support/annotation/Keep.html)注解。在类上添加@Keep可原样保存整个类。在要领或字段上添加它可完备保存要领/字段(及其名称)以及类名称。请留意,只有在行使注解支持库时,才气行使此注解。

在行使-keep选项时,有很多事项必要思量;如需相识有关自界说设置文件的具体信息,请阅读ProGuard 手册。题目排查一章概述了您也许会在夹杂代码时碰着的其他常见题目。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读