新浦京81707con > 首页 > 简单可行的安装包,怎样减少

原标题:简单可行的安装包,怎样减少

浏览次数:66 时间:2020-03-01

APK瘦肚,正是压缩APK的体量。看看以后的apk,有个别功力非常的粗略的apk,大小以致过百兆。在探视人家《王者手游》,这么风趣精致的游玩才七百多兆。所以APK塑身的知识恐怕要上学一下的。那篇随笔也不说太多,就说一下语言包塑身。

前言

乘胜事情的发展,App的机能更是多,代码量更大,不断追加的第三方库......
APK的体量也越来越大,怎样对安装包塑体成了我们优化利用的新挑衅。本文就为我们带给壹个简单可行、立杆见影的Android安装包塑身方案。

图片 1本人要消脂

图片 2王者.png

瘦肚之旅

一、安装包的协会
大家下载了最具代表性的BAT看家应用:Wechat、Tmall、手提式有线电话机百度的APK,使用Android Studio的Analyze apk功效对那一个应用举行剖判,结果如下:

微信.png

手提式有线电话机Taobao.png

手提式有线话机百度.png

此地能够见到各家应用APK的组成,还会有直观的比例,不要紧对团结的APK也深入分析一下。能够看看,安装包容量大头基本正是lib(so库),assets、res(图片)、classes.dex(代码文件,包括导入的jar包)。

二、精简 jniLibs
lib目录下寄放so库,悉心的冤家大概早就意识,大家拆解解析的四个应用程式的lib目录下都仅有三个'armeabi'文件夹。
咱俩知晓,别的NDK的ABI还恐怕有 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'等,这个都以节制帮忙分裂的集成电路布局的库文件夹。如若so全部都放一份对应的公文,宽容性当然是最棒的了,代价正是apk体量成倍拉长。能够见见BAT不约而同地精简到仅保留'armeabi'下的so库,是因为除开可以忽视的'x86', 'x86_64'结构,'armeabi'作为较早、底蕴的平台,包容性最棒。那么我们在做APK控食时就足以去除别的目录,效仿BAT仅保留armeabi文件夹,日常接受无需相当到相当低的Android版本,推荐仅保留armeabi-v7a文件夹就足以了。
具体操作如下:
jniLibs下仅保留armeabi-v7a目录,若有个别第三方并未有提供armeabi-v7a,能够把armeabi下的类库复制到armeabi-v7a,测验一下,宽容性凉时都还没难点。

defaultConfig {
        ...
        ndk {
            abiFilters 'armeabi-v7a' //gradle中指定支持的NDK架构
        }
        ...
    }

三、精简 drawable
Android Studio在开创项目时,暗中同意成立了五个drawable目录,如'drawable-hdpi','drawable-xhdpi','drawable-xxhdpi',差别目录对应着不一致dpi的手提式有线话机,前段时间相当多超少720P以下分辨率的无绳电话机,所以只保留一份份'drawable-xxhdpi'上的一套图片能源就可以(dp为单位时平时都会活动缩放),个别图片出入过大时,再做单独管理。推荐应用多个dimens.xml文件来适配分裂的无绳电话机尺寸,那样就保险兼备了应用容量与UI适配的难点。
四、优化帧动漫
动漫片是APP中不可能贫乏的要素了,而帧动画作为最古老的二个档案的次序也颇受诟病,快退出历史舞台了吗?要质量没质量,关键还占内部存款和储蓄器,原则是能不用就不要用,采取View动画、属性动漫来代替。若是因为一些原因一定要用的时候也要优化一下,毕竟总是多张相符图片的体量可不容忽略。

<?xml version="1.0" encoding="utf-8"?>  
<animation-list  
  xmlns:android="http://schemas.android.com/apk/res/android"  
  android:oneshot="true">  
    <item android:drawable="@drawable/ic_loading_1" android:duration="150"></item>  
    <item android:drawable="@drawable/ic_loading_2" android:duration="150"></item>  
    <item android:drawable="@drawable/ic_loading_3" android:duration="150"></item>  
    <item android:drawable="@drawable/ic_loading_4" android:duration="150"></item>  
    <item android:drawable="@drawable/ic_loading_5" android:duration="150"></item>  
    <item android:drawable="@drawable/ic_loading_6" android:duration="150"></item>  
    <item android:drawable="@drawable/ic_loading_7" android:duration="150"></item>  
    <item android:drawable="@drawable/ic_loading_8" android:duration="150"></item>  
</animation-list>

从下面代码能够看看,大家合并动用了8张图片达成了二个loading效果,假使连接图片之间的不相同比异常的小,那么完全能够隔张剔除,仅保留二分之一。那样,不仅仅不影响动漫效果又能够减掉apk体积。
五、代码优化
classes.dex中满含了我们的代码,可是也可能有望是大家没用到的代码,特别是有个别体积大,方法多的第三方库。由此,在品种中应有按期清理超时的代码、去掉无用的模块。
此外,还可以够通过使用ProGuard来对代码实行模糊、优化、压缩等专业,通过Android Studio自带的 “Remove Unused Resources”来找寻那几个曾经未有选取的能源。官方参考:压缩代码和能源

buildTypes {
        release {
            minifyEnabled true      //开启混淆
            shrinkResources true    //忽略不使用的资源
            ...
        }
    }

六、精练多国语言支持
不菲时候大家的运用根本就不必要帮忙多国语言,此时大家得以依靠自身状态手动节制只扶植简体普通话、法文等语言,这么些简单依旧比较鲜明的,特别是在strings能源超多的情形下,基本上也足以轻松个几百K吧!build.gradle中铺排如下:

defaultConfig {
        ...
        resConfigs "zh"
        ...
    }

七、图片能源降低
图片能源在APK中占领的轻重相对不轻,而UI的切图日常不会帮大家减弱处理,这里推荐一个在线PNG压缩网址TinyPng简易好用!随意选取了几张图纸上传压缩,压缩比比方下:

压缩效果.png

减弱过后的图片相比较,肉眼差不离分辨不出的界别,容量却减小了69%!

裁减前后比较.png

平均压缩比例能够完成五成以上,效果正是图片财富占用直接扣除,立见功能!此外,png格式的图形是要比jpg格式的要大的多,也能够将有个别图形替换来jpg格式,或许WebP格式,详细相比可以知道:WebP 相对于 PNG、JPG 有何样优势?

简要评论:应用的尺寸也是客户体验的多个重要方面,而减削 Android 应用安装包大小其实某些也不复杂。

世家都晓得了,Android的使用是支撑多样语言的,理论上,语言切到哪个国家,应用就应当出示那多少个国家的语言。上面是Android语言能源目录下多国语言的公文夹。

结语

在本文早先,即便也是有超级多有关安装包消脂的小说,但技能是常读常新,贵在亲身实行。以上都由此实战验证,最重大的是轻巧实用,操作性强。没医疗效果不要钱,有医疗效果就点个赞呗!
最后,这次安装包控食之旅就先到那边了。

对此移动使用来说,应用安装包的朗朗上口当然是越小越好。特别是对此一些欠发达地区,你不指望客商因为手机「存储空间不足」而卸载你的应用。

图片 3语言文件夹.png

本文就介绍了多少个小手艺来有效压缩 apk 的大大小小:

看见啊,这么两种语言,分明很占体积。今后自小编很极端,为了收缩apk大小,小编就只做意大利语。应该怎么办?你势必说,妈蛋,直接把公文夹通通通通删掉,不就能够了吗?难堪,行是行,但如此一些都不酷,并且万一项目老董抽风说,来来,笔者今天想加个法克语,那不是又要把语言文件夹拷进去,麻烦死了。

第一,我们先用 Android Studio 提供的 APK Analyser 工具来深入分析下大家的 apk 文件:

这段日子提供一种方式,只要求加一句配置就可以垄断(monopoly卡塔尔将什么语言包编进apk。方法正是在build.gradle中增添一句

图片 4apk

resConfigs "en"

能够看来占空间最多的显即使多少个部分:classes.dex, res 和 resources.arsc。

一体化的build.gradle文件,上边哪一句找到了吧?正是加在defaultConfig 里面啦。

  • classes.dex:富含有 Java 代码的字节码文件。
  • res:包括了财富文件,举例图片、布局文件等等。
  • resources.arsc:包括全体的值能源文件,如 strings, dimensions, styles, integers 等等。
apply plugin: 'com.android.application'android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.example.rubbishdemo" minSdkVersion 22 targetSdkVersion 23 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" resConfigs "en" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:23.4.0' testCompile 'junit:junit:4.12'}

classes.dex 文件的尺寸完全在于程序中方法数的某个。在上头展现的例证中,包括了 43九十几个类和 29897 个措施。那几个结果是私下认可未有运用 proguard 的。我们有四个暗许的 proguard 文件可以行使:

来个职能给你们看下,现在本人的工程里面有两种语言包,中文和保加名古屋语

  • proguard-android-optimize.txt
  • proguard-android.txt

图片 5语言包.png

从名字上就足以看看,proguard-android-optimize.txt 是更加的激进的 proguard 配置,包涵和 proguard-android.txt 相符的 ProGuard 准绳,但还满含其余在字节码一流实行分析的优化,以越发减小 APK 大小和帮衬提升其运作速度。

本文由新浦京81707con发布于首页,转载请注明出处:简单可行的安装包,怎样减少

关键词: 新浦京81707con 语言 Android... Android知识 瘦身

上一篇:Android框架之路,基本操作

下一篇:没有了