有那么一次面试,聊到了真机调试的开发者选项,很遗憾,我除了会打开下USB调试,偶尔打开显示布局边界看看布局,偶尔开启调试GPU过度绘制看一眼,都没有好好研究过其他选项调试对于我们Android项目开发有什么用处,大概这就是高级开发工程师与初级小菜鸟的区别吧,那次面试确实也发现了自己很多的不足,懂的东西都是皮毛,深入一点点都是一脸懵逼,噗~不说伤心事了, 好啦,每天进步一点点,现在来研究看看吧。
我现在用的小米5s,一般安卓手机默认没有开启开发者选项,因此需要进入设置 -> 关于手机 ->连续点击N次MIUI版本,即可开启开发者模式了,其他安卓手机类似,点击N次Android版本号便可开启了。然后在设置中的其他设置或者高级设置等等菜单中即可看到开发者选项的菜单了。
- 开启开发者选项
开发者选项的总控制开发,只有开启它下面一切开关才是可用状态。
- 不锁定屏幕
充电时不会休眠,主要就是方便开发,在开发过程之外的情况下记住了要关闭,不然得多费电啊!
- 直接进入系统
点击屏幕直接进入系统而不会锁屏,这里我的手机不能打开是因为我开了锁屏密码,下面小字也有说明需要无屏幕密码。
- 打开蓝牙数据包日志
抓取所有的蓝牙数据包到一个文件中,在调试蓝牙程序的时候比较方便。
- 打开蓝牙调试日志
抓取所有的蓝牙调试日志,在调试蓝牙程序的时候比较方便。
- 设备解锁状态
- USB调试
开启后,手机才能连接到电脑,然后调试。这个总开关开启了,才可以开启下面的USB调试和安装。这个可用于在计算机和设备之间复制数据、在设备上安装应用而不发送通知以及读取日志数据。
- 撤销USB调试授权
针对之前授权过的所有计算机撤销USB调试的访问权限。
- USB安装
是否允许通过USB安装应用,这个需同意,不然AS运行的程序无法直接安装在真机上。
- USB调试(安全设置)
这个比上面USB调试要高级点,可让开发者使用电脑软件通过USB模拟手势点击以及修改手机系统设置或权限。
- 选择模拟位置信息应用
允许代码模拟位置,比如地图类应用需要测试在外地的使用情况,通过开启此项选项可以通过代码模拟位置
- 启用视图属性检查功能
具体就是进行视图属性检查吧,怎么用不清楚,用到的时候再来补充,开启或关闭都会直接黑屏一瞬间。
- 选择调试应用
允许开发者在电脑上调试手机应用。一般情况下无用。
- 等待调试器
在选择了一个调试应用的情况下可开启,调试应用汇在执行前等待附加调试器。
- 通过USB验证应用
文字描述了,就是通过ADB/ADT检查安装的应用是否存在有害行为。尝试几把,无法关闭掉,暂时不知道如何关闭,默认开启了,这样也好,安全嘛。
- 日志记录器缓冲区大小
可设置日志的缓冲区大小
- 无线显示认证
显示无线显示认证选项
- 启用WLAN详细日志记录功能
提升WLAN日志记录级别(在WLAN选择器中显示每个SSID的RSSI)
- 主动从WLAN网络切换到移动数据网络
字面意思,试验开启后连上的wifi并没有就立即切换到移动数据,应该只是允许当WLAN信号比较弱的时候,系统自动将WLAN网络切换成数据流量。
- 一律允许WLAN漫游扫描
根据接口中目前的数据流量允许/禁止WLAN漫游扫描。
- 实用旧版DHCP客户端
找到两种回答:手机DHCP客户端主要是为了从DHCP服务器获得IP从而实现上网,而通常DHCP客户端需要从DHCP服务器获得IP都是有四次协商,从而获得IP。这就是旧版dhcp客户端的意思。使用旧版DHCP客户端 使用无线体验好一些。
旧版只能适配IPv4协议,新版可以适配IPv4和IPv6。
- 始终开启移动数据网络
移动网络以及WLAN一同开启,即使连上wifi,方便哪方网络状态不行快速切换。
- 选择USB配置
用于选择USB配置,连接电脑主要的用处。
- 显示触摸操作
为触摸提供视觉提示,开启的时候,会有个圆圈圈表示手指的触摸的地方,喜欢这种效果就打开。
- 指针位置
开启后,会有个十字架,而且会有平滑的线显示手指触摸的位置,只显示当前触摸数据,顶端还有坐标,主要是为了方便开发,可方便对比开发得到的坐标数据。
- 显示Surface更新
屏幕稍微有点变化就闪烁,开启后随便一操作闪得我都要晕了。大概是用来监控surface变化吧,微小变化,可能直观不是特别能看出来的,闪烁一下就很明显了。
- 显示布局边界
开启了就显示剪辑,边距,各种线,看的我眼也要花了,可以用于开发看其他app的布局,只是没有数据,只有各种边界线。
- 强制使用从右到左的布局方向
这个开启就神奇了,虽然文字没有倒过来噢,文字图标左右都反过来了,看效果。
用处嘛,可能对有些人来说说这样子布局看起来更习惯吧。
- 窗口动画缩放
可以选择弹出窗口动画缩放速度,也可以关闭动画,都体验下就能发现动画效果了,比例越低,则切换动作较为生硬,动画效果更快。
- 过渡动画缩放
差不多设置效果同上,表示的是切换页面时候的动画效果。
- 动画程序时长缩放
同上,表示启动app时候的动画。
- 模拟辅助显示设备
选择其中一种类型的设备会在当前的屏幕上再出现一个模拟的显示设备,显示的还是手机上当前窗口的页面,比较小。就是等于一个显示当前屏幕的一个小窗口。开发过程中也许,在适配的时候,有点用处,可以利用一下。
- 强制进行GPU渲染
在应用程序中使用2D程序加速,Android的软件应用的界面可以使用CPU或GPU渲染,包括桌面,以前版本的图形界面的渲染工作只有部分由GPU来完成,其他的还是由CPU来做,选上这个就是强制由GPU来渲染,由于GPU处理图形比CPU好,所以GPU渲染应用的界面会更流畅,同时减轻CPU的压力,就是俗称的硬件加速,会增加界面的流畅程度。
但强制GPU也是有缺陷的。第一是强制GPU加速功能会增加功耗,降低待机时间。第二是,部分旧程序本身不支持GPU渲染,没有硬件加速hwa的就会出现崩溃。比较老的程序因为SDK版本低不支持GPU加速,或者开发时默认不开启GPU渲染,遇上gpu强制渲染就会出现问题。
想开启就开启喽~
- 显示GPU视图更新
开启后整个屏幕都是红的,屏幕上的区域更新时闪烁响应的屏幕区域各种闪烁。还是别开了,眼都花了。当然开发需要提示的时候还是开启下吧。
- 显示硬件层更新
下面小字也描述了,Flash硬件层进行更新时会显示为绿色,大概做手机硬件软件一块儿的开发会开启吧。
- 调试GPU过度绘制
使用GPU绘图时,在屏幕上绘制不同的颜色来表明过度绘制的情况。
过度绘制情况的好坏通过颜色来表示,从蓝色、绿色、淡红色到红色 ,分别代表从好到坏的渐变(1x过度绘制、2x过度绘制、3x过度绘制和超过4x过度绘制)。
界面上存在少量的淡红色可以接受,但如果存在较多的大红色就代表过度绘制有点严重了,这种时候,开发人员就要好好优化一下自己写的布局了。
主要用于开发人员调试布局,避免写出的布局过度绘制了,优化性能。
这里还有个选项很人性呐,显示适合绿色弱视患者查看区域。赞一个。
- 调试非矩形剪裁操作
选择下面不同的裁剪操作,发现相册里面照片->美化->调整这里裁剪下面这个选择角度的区域颜色变化了,还有当选择以绿色突出显示测试绘制命令的时候,在桌面翻页的时候,即将翻到的页面应用图标都是绿色的,不大能明白这个功能有啥用。
- 强制启用4x MSAA
4倍抗锯齿,非游戏达人,对此不熟悉,哈哈。对画质有很大的提升,游戏画面更为细腻和圆润,适合经常玩游戏的用户,前提是你的GPU带的动,不然耗电和发热会增加,打王者荣耀的时候可以开启噢噗
- 停用HW叠加层
停用的话,所有应用将共享视频内容,将不会经常检查碰撞与剪裁以显示一个合适的图像,将耗费大量处理能力。而HW叠加层允许应用有单独的视频内存,性能要更好些,所以别停用就对了,稳稳的没毛病。
- 模拟颜色空间
针对一些特殊弱视或者色盲人群选用的颜色模拟,还挺人性的,不需要就不用设置了。
- 关闭USB音频转接
关闭自动转接至USB音频外围设备的功能。
- 启用严格模式
应用程序在主线程上执行长时间操作时,屏幕闪烁!在打开某个应用后,点返回退出但在进程中仍然运行,长时间后屏幕会闪烁提示应用还在在主线程上运行。
- 显示CPU使用情况
开启后的显示CPU使用情况,各类信息展现在旁边。
- GPU呈现模式分析
常用于Android性能分析的工具,GPU呈现模式用来测量app的帧速率,属于GPU Profile工具的一种。在Android系统中是以每秒60帧为满帧的,那么用1秒÷60帧,就能得出每帧为16毫秒(ms)时为满帧的界限,每帧快于16ms即为流畅,而上图绿线所标示的高度即为16ms线,低于绿线即为流畅。
如上图,可以看到一排柱状图在屏幕上,从左到右动态地显示,每一个垂直的柱状图代表一帧的渲染,越长的垂直柱状图表示这一帧需要渲染的时间越长。随着需要渲染的帧数越来越多,他们会堆积在一起,从而观察到这段时间帧率的变化。
(GPU要绘制什么样的视图是需要CPU发出指令的,但CPU不会直接告诉GPU怎么做,而是会先将这一命令存入一个“盒子”,在盒子中会形成一个列表,然后GPU从盒子中取出命令进行视图的渲染绘制。)
红色代表了“执行时间”,它指的是Android渲染引擎执行盒子中这些绘制命令的时间,假如当前界面的视图越多,那么红色便会“跳”得越高。
黄色通常较短,它代表着CPU通知GPU“你已经完成视图渲染了”,不过在这里CPU会等待GPU的回话,当GPU说“好的知道了”,才算完事儿。假如橙色部分很高的话,说明当前GPU过于忙碌,有很多命令需要去处理。
蓝色用于判断流畅度的话,参考意义是较大的。蓝色代表了视图绘制所花费的时间,表示视图在界面发生变化(更新)的用时情况。当它越短时,即便是体验上更接近“丝滑”,当他越长时,说明当前视图较复杂或者无效需要重绘,即我们通常说的“卡了”。
一般情况下,当蓝色低于绿线时都不会出现卡顿,但是想要追求真正的丝般顺滑那当然还是三色全部处于绿线以下最为理想。
当开发发现曲线出现异常时,就该去做调整和优化了,为用户提供更好体验。
还有需要分析具体详细的数据的时候,结合下面的命令来进行:
$ adb shell dumpsys gfxinfo your_package
执行该命令产生的日志中,你会发现一个标题为: Profile data in ms. 这一节包含为每个窗口所属应用产生的3列表格。
- Draw 是消耗在构建java显示列表DisplayList的时间。说白了就是执行每一个View的onDraw方法,创建或者更新每一个View的DisplayList对象的时间。
- Process 是消耗在Android的2D渲染器执行显示列表的时间。你的视图层次越多,要执行的绘图命令就越多。
- Execute 是消耗在排列每个发送过来的帧的顺序的时间,或者说是CPU告诉GPU渲染一帧的时间,这是一个阻塞调用,因为CPU会一直等待GPU发出接到命令的回复。
关于Execute:如果执行耗费了过长的时间,这意味着你是跑在前面的图形管线。Android在运行时可以有3个缓冲区,如果你需要另一个应用程序将阻塞直到其中的一个缓冲区释放出来。两个原因会发生这种情况。第一,你的应用在Dalvik中快速绘制但在GPU显示列表时候消耗了大量时间。第二,你的应用程序花了很长的时间来执行第几帧,一旦管线满了他将无法赶上,除非动画完成。
- 启用OpenGL跟踪
图形视角效果器,是手机制作图片软件的辅助工具,比如ps3D立体图,需要启用这个工具才能实现再编辑过程中的图片旋转,放大缩小复位等。
- 不保留活动
用户离开即销毁每个活动,当发生页面跳转时,前一个Activity被立即销毁,可用来模拟设备内存不足时后台Activity被销毁的场景,若应用做到开启它时功能仍基本正常,说明代码设计得比较合理,不同Activity之间的耦和很低,打开这个选项的时候,试了几个应用,都有奔溃现象。
- 后台进程限制
自定义设置后台程序的进程限制。标准限制是系统自行决定,还有选项是限制一个或者二三四五个后台运行。
- 系统内存优化级别
优化系统内存的设置,有各种级别可选,看各人不同情况选吧,开发测试或优化应用程序内存情况的时候说不定也是用得着的。
- 未启动的应用
点进去有个列表展现当前手机系统中未启动的应用。
- 显示所有“应用程序无响应”
用软件卡死了跳出会提示说该“应用无响应是否关闭”的提示框。
- 显示“强制关闭”
当app出现FC(强制关闭)错误时,提示给用户知晓。
- 启用MIUI优化
小米提供的MIUI优化,开启就享受优化效果。
啊哈~这是欠了很久的整理总结笔记了,人太懒了,现在也是心血来潮,终于搞定了,虽然还不完美,可督促自己还是完成了一件事,继续加油吧!