美文网首页
减小APK体积

减小APK体积

作者: 瀚海来客 | 来源:发表于2019-05-28 12:05 被阅读0次

减小apk体积

1. ProGuard

Proguard可以删除无效的java code,显著地减小apk体积,
但是要注意使用proguard之后要测试app,有时会导致一些bug。

2. ShrinkResources

   在gradle中使用ShrinkResources可以去除无效的资源文件,
   从而减少最终的apk大小,在build.gradle中使用shrinkResources:
   release {
      ...
      shrinkResources true
      ...
   }

3. 使用Android Lint

Unused resource这一栏打开,即是未被使用的资源列表,用户可以参照来手动删除资源

4. 清理Assert文件夹

Assert文件夹经常会放置一些不被编译的资源,时间久了,里面可能一些文件或者资源已经不用了,
然而这个文件夹也是会被打包到apk里面的。所以定期清理这个里面的内容也是减小apk体积的重要一步。

5. 我们可以通过配置gradle来制定只打包某些so,依然是在defualtConfig中:

defaultConfig {
    
        ... ...

    ndk {
        //设置支持的SO库架构
        abiFilters 'arm64-v8a', 'armeabi' //, 'x86', , 'x86_64', 'arm64-v8a'
    }
}

6. 对第三方库进行重新定制(重新打jar包)

7. 动态加载技术(插件化)

8. 用代码代替图片,放弃一部分图片资源,对图片进行无损压缩

开发的时候有些地方能用代码做出来的就尽量不用图片来渲染,
这样子可以减少图片资源的数量从而减少体积。

-   用shape代替背景图
-   用RotateDrawable代替仅仅是方向不同的“内容相同”的图片
-   用layer-list来制作多层图片从而达到复用
-   使用属性动画而不是多图片连续播放的帧动画
-   用shape代替背景图 

很多背景图比如按钮的背景、纯色背景都是可以用shape来制作的,  
这样子仅用xml代码就代替了png资源。比如这么要给按钮背景图(纯色背景、带边框、圆角)
可以用shape而不是Png图片来制作

<?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <stroke 
                android:width="0.5dp" android:color="@color/white"/>
            <gradient 
                  android:startColor="#ffffff" 
                  android:endColor="#ffffff" 
                  android:angle="0.0" />
            <corners 
                  android:topLeftRadius="4dp" 
                  android:topRightRadius="0dp"
                  android:bottomLeftRadius="4dp"
                  android:bottomRightRadius="0dp" />
        </shape>
    </item>
</selector>



用RotateDrawable代替仅仅是方向不同的“内容相同”的图片
这里两个图片是两个按钮箭头,但是仅仅方向不同而已,其实可以只用其中一个图片即可,
而另一个用RotateDrawable来让其“调转”180度

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/ic_arrow_left"
    android:fromDegrees="180"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="180" />


用layer-list来制作多层图片从而达到复用
有些需求中需要一种图片,但是明显这个图片是其他几个图片简单叠加而已,
那么可以使用layer-list来达到目的

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <!-- 最底层的图片,以x,y轴坐标为中心进行旋转-->
        <rotate android:pivotX="0" android:pivotY="0"
                android:fromDegrees="-10" android:toDegrees="-10">
            <bitmap android:src="@drawable/chatting_bg_default_thumb"/>
         </rotate>
    </item>
    <!-- 第二层的图片,以x,y轴坐标为中心进行旋转-->
    <item>
        <rotate android:pivotX="0" android:pivotY="0"
                android:fromDegrees="15" android:toDegrees="15">
            <bitmap android:src="@drawable/chatting_bg_purecolor_thumb"/>
        </rotate>
    </item>
    <!-- 最上层的图片,以x,y轴坐标为中心进行旋转-->
    <item>
        <rotate android:pivotX="0" android:pivotY="0"
                android:fromDegrees="35" android:toDegrees="55">
            <bitmap android:src="@drawable/mark"/>
        </rotate>
    </item>
</layer-list>


使用属性动画而不是多图片连续播放的帧动画

相关文章

  • 减小apk体积

    1.icon图标使用webp or svg 2.移除无用资源并且混淆 //开启代码淆 minifyEnabled ...

  • 减小APK体积

    使用混淆minifyEnabled true 开启shrinkresourcesshrinkResources t...

  • 减小APK体积

    减小apk体积 1. ProGuard 2. ShrinkResources 3. 使用Android Lint ...

  • 如何减小apk体积

    Android开发过程中,不可避免的会遇到apk体积越来越大的问题,但通过有效的方法,也能将其体积控制的很小。ap...

  • APK 瘦身

    为什么要减小 APK 体积 下载 APK 需要流量,流量需要花钱; 安装 APK 需要考虑手机剩余空间 APK 大...

  • 减少apk体积

    [TOC] 首先说下apk体积减小的必要性 减小apk的安装时间,增加用户留存,减少CDN流量费用 再这之前,先来...

  • APK瘦身 减小APP体积

    APK dex瘦身 APK res瘦身 APK减小语言包 APK 重新打包 PNG转JPG tiny处理png w...

  • Android如何减小APK体积

    一、移除无用资源 android { buildTypes { release { minif...

  • Android Studio如何减小APK体积

    怎么可能呢是吧?都还没有写代码呢,就已经1.31M了。检查一下代码,我们会发现,工程里自动添加了V7的向下兼容包,...

  • 性能优化(6)-减小APK体积

    主目录见:Android高级进阶知识(这是总目录索引)[译]Reduce APK Size 个人感觉这篇文章写得还...

网友评论

      本文标题:减小APK体积

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