美文网首页
Android性能分析工具介绍

Android性能分析工具介绍

作者: Allenlll | 来源:发表于2019-01-03 16:42 被阅读10次

    一、SysTrace

    • 不能显示程序执行的代码信息,发现了问题,也不能定位问题的位置
    • sdk中tools工具包中monitor经常打不开,需要jdk版本的配合,如果打不开可以用命令行的形式来进行分析,systrace路径为android-sdk/platform-tools/systrace/
    • 命令行执行需要使用mac默认版本python2.7
    • 命令例子:
      python systrace.py -t 3 -o ~/mytrace.html -a com.android.test gfx view wm am res sync
    • 通常我们在怀疑引起jank代码地方,添加如下内容:
      Trace.beginSection("MyAdapter.onCreateViewHolder");
      和 Trace.endSection();

    二、traceView

    • trace文件的生成有几种方式
      一种是通过AndroideStudioCPU分析器生成
      一种是DDMS生成
      一种是通过代码:android.os.Debug.startMethodTracing(String traceName); android.os.Debug.stopMethodTracing();在sdcard/Android/data/包名目录有生成的文件。这咱方法方便定位问题

    三、命令行工具:dumpsys

    • 配合linux的watch命令对比查看memInfo,操作后查看内存分配情况
      watch -n 2 -d 'adb shell dumpsys meminfo [pkgname|pid] -d'
    • 查看gpu绘制性能,后面的-d是表示显示详细信息
      watch -n 2 -d 'adb shell dumpsys gfxinfo [pkgname]'
      还可以查看数据库的性能问题,-d是高亮显示不同。

    四、strictMode

    • 开启strictMode,在发生性能问题时打钱log或者应用崩溃来提示开发者,及时修正不合理代码
    • 代码如下:
            StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                    .detectDiskReads()
                    .detectDiskWrites()
                    .detectNetwork()   // or .detectAll() for all detectable problems
                    .penaltyLog()
                    .build());
            StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                    .detectLeakedSqlLiteObjects()
                    .detectLeakedClosableObjects()
                    .penaltyLog()
                    .build());
    

    五、手机中开发者选项

    • 勾选不保留活动,以测试Activity的回收情况,有没有内存泄露的情况
    • 高度GPU过度绘制,显示过度绘制区域,根据颜色区分是否发生了过度绘制
    • GPU呈现模式分析,在屏幕上显示为条形图,根据每一帧的绘制情况,来检查是不是绘制耗时,条形图的颜色可以区分是ondraw,layout布局,还是主线程有耗时操作。

    六、微信Matrix

    • 应用瘦身
    • 启动时间分析
      这两个是比较有用的工具,其它可以再研究一下。

    七、其它一些命令

    • 查看应用进程名称
      adb shell ps | grep [key word]
    • 查看Activity启动时间,一般是看totalTime
      adb shell am start -W com.sohu.sohuhy.dev/hy.sohu.com.app.login.view.SplashActivity
      adb shell am start -W com.sohu.sohuhy.dev/hy.sohu.com.app.MainActivity
    • 查看Activity启动Log,过滤ActivityManager中的Displayed,在异步方法结束时加上reportFullyDrawnLog信息中将会计算异步的时长。

    八、一些经验

    • 加载优化:
      延时加载,在界面完全显示出来后,加载耗时功能,
      异步加载
      懒加载,使用时再加载

    相关文章

      网友评论

          本文标题:Android性能分析工具介绍

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