apk优化技巧

apk优化,其实就是缩小apk的体积。最近在做一个海外贷款项目,对apk的体积大小有要求,不能大于8M,所以专门调研了一下apk优化技巧,并做记录。

apk体积优化关注点:

  1. 资源图片,小于200px的图片,建议使用SVG形式,进行矢量图适配,形成xml文件来使用,可以大幅缩小apk体积, 其他图片使用webp压缩。 使用方法: res --> new --> vector asset就可以生成SVG格式图片。在selector中也可以使用,只需要配置一下即可
  2. 国际化配置,限定使用的语言,可以缩小大概几百k的体积。在分析apk的时候,可以看到点击resources.arsc下,下面选择string,会发现有很多种语言出现,我们可以配置限定使用的语言,配置方法,在build.gradle中使用resconfigs指定语言为中文或者英文等
  3. 重点:so库,使用armeabi-v7a,因为查看微信apk,发现它也只是使用了armeabi-v7a的
  4. 移除无用资源,使用lint工具删除。在as中,analyze下,run inspection by name,然后输入unused resource,就会把未使用的文件找出来
  5. 代码混淆,代码压缩,使用motifyEnable设置为true
  6. 资源压缩,shrinkResource ,配置为true
  7. apk使用7zip极限压缩,会将apk压缩到很小。

App卡顿优化点:

  1. 内存抖动,启动速度,跳转,响应速度。频繁的内存抖动,也会导致App卡顿掉帧现象。
    典型例子:
    for(int i = 0;i < 50;i++){
        String str = "hello world";
        str = str + "i";
    }

    上面的代码就会造成频繁创建String对象和销毁String对象,导致频繁的gc,从而导致App卡顿。
    跳转:在Activity A跳转到Activity B时,先执行Activity A的onPause,然后才执行Activity B的onResume方法,所以,应该尽量避免在onPause方法中做耗时操作。

  2. leakcanery工具检测内存泄漏,as的profiler也可以用来监控内存抖动和泄漏
  3. 内存抖动会伴随着大量的GC,频繁的GC也会导致App卡顿

App启动速度优化:

  1. 启动时间统计,可以使用命令 adb shell am start -W com.gpshet.wmfbuu.ewqcm/.activity.Start_Activity 来查看   
         thistime:最后一个activity启动耗时
         totaltime:所有activity启动耗时
         waittime:AMS启动所有activity总耗时
  2. App端优化方案: 属于伪优化
    2.1、添加一个启动过程的过渡窗口,目的是提高启动响应体验,不会影响到冷启动速度,具体实现:
     
       
    2.2、application初始化的异步改造,在application的onCreate方法中会初始化很多第三方库,这些库如果不需要在主线程中启动,那么可以采用异步初始化的方法来优化。

 

 

 

你可能感兴趣的:(技术总结)