从APK角度提升App性能【Apk瘦身加固】

APK的基本概念


在Android设备上,直接运行APK文件即可完成安装

APK文件其实是zip格式,但后缀名被修改为apk,通过解压,可以看到Dex文件,Dex是DalvikVM executes的简称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码

下图是解压之后的APK目录

从APK角度提升App性能【Apk瘦身加固】_第1张图片

  1. META-INF\ (注:Jar文件中常可以看到);
  2. res\ (注:存放资源文件的目录) ;
  3. AndroidManifest.xml (注:程序全局配置文件) ;
  4. classes.dex (注:Dalvik字节码);
  5. resources.arsc (注:编译后的二进制资源文件)。

windows平台查看某一个文件的大小应该不是很困难的事情吧?

定义分工,优化APK是谁的责任?


首先得从APK的解压目录说起

通常来说占据APK内存大小的前四名为 classes.dex>=res>assets>lib

直接由程序员产生的其实只有classes.dex文件,因为这都是Java代码,所以在这里某些程序员同仁可能要甩锅了,“APK安装包过大,明明就是UI,美工切图的问题!”

  1. 给的图片太占内存?宽高几百像素的Imageview,UI给了我2M的图片,尼玛,坑比!
  2. 图片适配给的太多?1280*720,1920*1080….整个res目录全是各种分辨率合适吗?
  3. 阿西巴,日语,韩语,英语,法语…?国际化素材打包这么多?关键还包含朝鲜语,什么鬼?
  4. 应用宝首发,小米首发,各种首发,需要高清大图,安装包满的塞不下啦!

其实不然,不论我们拿到怎样设计稿,切图,作为程序员,我们都应该优雅的解决:

  1. 对UI给的图片进行极致压缩

    • 格式压缩,PNG转成WebP,JPEG,压缩工具-iSparta
      从APK角度提升App性能【Apk瘦身加固】_第2张图片
      由此可见WebP的体积减少最高可至80%!

    • 尺寸压缩 压缩工具-tinypng,可以实现在无损压缩的情况下图片文件大小缩小到原来的30%-50%

  2. 图片仅使用一套,目前来说放在hdpi或者xhpdi目录下都可以
  3. 国际化,多渠道,针对不同情况下,由程序员打不同的APK包

    方法1:打包过程中,清除没有被引用过的资源通过 shrinkResources trueminifyEnabled true

        android {
        ...
        buildTypes {
            release {
                shrinkResources true
                minifyEnabled true
                proguardFiles getDefaultProguardFile('proguard-android.txt'),
                        'proguard-rules.pro'
            }
        }
    }

    方法2:通过resconfig属性指定的语言。未指定的语言的任何资源都被删除。

    android {
        defaultConfig {
            ...
            resConfigs "en", "fr"
        }
    }

    方法3:APK Splits构建APK,支持按不同ABI,不同分辨率分割打包APK

    android {
      ...
      splits {
        density {
          enable true
          exclude "ldpi", "tvdpi", "xxxhdpi"
          compatibleScreens 'small', 'normal', 'large', 'xlarge'
        }
      }
     abi {
          enable true
          reset()
          include 'x86', 'armeabi-v7a', 'mips'
          universalApk true
        }

其次美工们也应当从根源上做起,切图时需要遵循“图片像素不浪费”原则,设计稿标注多大的像素,那么切的图就应当为多大,此外,保存图片格式时,可以适当降低图片质量,达到减小图片大小的问题。

APK加固


本人对加固技术所知甚浅,此处参考两篇资料作出总结

  1. 对时下流行的Android应用加固技术分析
  2. Android App安全加固行业分析报告

    大多数移动安全厂商其实的加固方案是整体dex加密技术,定制版加固与免费版加固方案上没有区别,都是可执行文件的加密保护。

总结资料


  1. 图片压缩工具-iSparta
  2. 图片压缩工具-tinypng
  3. 指定打包某一些资源文件至APK中,清除没有被引用的资源
  4. Wep探寻之路
  5. 对时下流行的Android应用加固技术分析
  6. Android App安全加固行业分析报告

你可能感兴趣的:(Android小升初)