美文网首页
Android-APP瘦身

Android-APP瘦身

作者: 超人TIGA | 来源:发表于2020-01-20 18:28 被阅读0次

    随着项目的版本迭代,APP的apk体积越来越大,导致用户体验不好,所以必须进行对项目体积的优化整理。
    整理优化的地方:
    ①各种各样的图片资源
    ②过期的资源,例如:图片、代码、文件等
    ③结合自身项目,去掉不必要的国际化

    一、图片资源

    ①图片资源使用SVG

    APP中,会有非常多的元素图片,而且Android还需要根据不同的分辨率,进行多套尺寸的图,放在不同的分辨率文件夹中,随着项目的开发,图片会越来越多。SVG就可以完美解决多余的图片资源,并且SVG的体积更加小。

    但是美工给我们的SVG图,Android Studio不能直接使用,我们需要转化一下: image.png 转化成功后,会在drawable文件夹中生成一个xml的资源文件,如下图: image.png

    之后就可以在控件中设置背景或者src了。
    使用SVG的好处是,我们已经不需要导入多套图片了,而且SVG会根据我们设置的控件大小,自己缩放,而且不会失真。

    ②处理特殊的复杂大图

    有些图片背景,是个大图而且图案相对复杂,这时候我们就不能使用SVG了,需要进行APP内的大图压缩,转为webp格式,达到减少体积的效果。 image.png 选择后会弹出对话框 image.png 这里需要选择有损压缩还是无损压缩,无损压缩需要APP的最低版本是4.3。如果选择有损压缩,则会弹出下图给你操作 image.png 你可以看到原图大小、压缩后大小、压缩率等信息,还可以预览压缩前后的图片效果,点击finish就可以生产图片。

    ③Tint着色器

    在美工出的效果图中,如果有两个icon图案完全一样,而且只有一种颜色,这时候我们就可以使用tint来着色,从而避免多引入多一个SVG或者png。

    
                            <ImageView
                                android:id="@+id/ivCoin"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_centerVertical="true"
                                android:tint="@color/cB32a3c58"
                                android:src="@drawable/icon_coins" />
    

    二、移除无用资源

    ①移除版本迭代导致不使用的资源

    先选择分析里面的筛选 image.png 然后输入名称,我这里输入unused resource image.png 等扫描完毕,得到下图结果。 image.png 这里就是没有引用过的资源,但是也有可能是代码里面利用反射之类的方法进行使用,所以删除之前,先根据自身项目的逻辑,进行谨慎删除。最后配合gradle配置移除无用资源。
    release {
                buildConfigField "String", "ENVIRONMENT", "\"RELEASE\""
                buildConfigField "boolean", "IS_RELEASE", "true"
                minifyEnabled true
                //移除无用的resource文件
                shrinkResources true
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                ndk {
                    abiFilters "armeabi" // 保留这种架构的CPU
                }
            }
    

    ②去掉多余的国际化

    defaultConfig {
            applicationId "com.tnaot.news"
            minSdkVersion rootProject.ext.minSdkVersion
            targetSdkVersion rootProject.ext.targetSdkVersion
            versionCode 45
            versionName "3.4.0"
            //只保留指定和默认的资源
            resConfigs('zh-rCN','km-rKH','en-rUS')
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
            multiDexEnabled true
            javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } }
            //版本名后面添加一句话,意思就是flavor dimension 它的维度就是该版本号,这样维度就是都是统一的了
            flavorDimensions "1"
        }
    

    对于项目APP瘦身,我暂时做了这些工作,效果也算非常的明显,主要图片的那一部分,就已经可以减少30%以上。

    相关文章

      网友评论

          本文标题:Android-APP瘦身

          本文链接:https://www.haomeiwen.com/subject/hjtdzctx.html