Android群英传神兵利器总结

非常不错的一本书

Posted by 晓晨DEV on September 20, 2016

拿到书后先,看了下目录感觉自己绝大部分的知识点覆盖到了,但是阅读完才发现里讲的很多知识自己其实是没有深入理解的,最近自己确实是心情不好有些浮躁,检讨检讨,本文记录get到的知识点。

第一章

  • 搭建开发者论坛可以考虑使用NodeBB
  • GEEK PPT 可以使用(impress.js、strut、reveal.js)
  • 搭建项目文档可以考虑使用MkDocs、RanetoDocs

第二章

这一章唯一不熟悉的就是tag

  • git tag -a v1 -m “version1” b687b06 -a tag名 -m 描述
  • git push origin version1 本地tag推送
  • git push origin --tags 本地全部tag推送

第三章

这一章关于 Android Studio 快捷键的地方我觉得写得挺失败的,关键点在于很多地方直接使用了Android Studio 默认快捷键书中说使用什么什么快捷键(例如 Command + J )怎样怎样,但是对于我以 eclipse 快捷键为基础来使用 Android Studio 的人很多地方读起来一脸懵逼啊,如果把每个快捷键都带上在 keymap 里的名称就好了,准备自己写一篇。

还是有自己没有覆盖到的知识点的:

  • 两下 shift -> search anywhere
  • view -> enter presentation mode 进入演示模式
  • 注意使用日志断点和异常断点
  • 代码提示可以用 tab 补全,区别是是否删除后面的
  • reveal in finder ,在finder中打开

第四章

第四章主要讲解gradle,因为自己对gradle还算熟悉本章就不做记录了,之后要尝试使用 Grovvy 语言写一个Android插件。

第五章

AAPT(Android Asset Packaging Tool)

./aapt l <APK Path>    //列出apk内容
./aapt d [--values] <APK PATH>  //查看apk信息

AAPT 源码位于/frameworks/base/tools/aapt 目录下

dumpsys

adb dumpsys查看系统的状态信息,可查看如下值:

  • Activity
  • cpuinfo —- cpu信息
  • meminfo —- 内存信息
  • package —- package信息
  • window —- 窗口信息
  • statusbar —- 状态栏
  • battery/batteryinfo —- 显示电池/使用信息
  • alarm —- 显示alarm信息

可以使用adb dumpsys -h 进行学习

Logcat

  • adb logcat -s xys tag过滤
  • -f 保存到文件

Hierarchy Viewer

  1. 只允许在模拟器或者工程机上使用,其他版本可以使用 https://github.com/romainguy/ViewServer。

  2. 也可以使用UI Automator Viewer 来分析布局。

  3. Hierarchy Viewer 可以把 View 保存为PNG,或者图片格式。

第六章

全书我收获最多的一章,非常好!!!

  1. Android系统对于UI的提升:

    • 在Android 2.3版本,所有绘图由GPU完成 — 软解时代
    • 在Android 2.3之后,系统增加了GPU,同时把很多绘图工作交给GPU进行渲染 — 硬解时代
    • 在Android 4.1之后,Google 发布了 “Project Butter” ,通过VSYNC垂直同步机制和多级缓存机制(three frame buffer)进一步提高绘制效率 — 黄油时代
    • 在Android 5.0之后,系统增加了Render Thread。通过这个线程进行异步绘制,即使某一帧发生延迟也不会影响下一帧 — 异步绘制时代。
  2. RelativeLayout 的性能不一定优于LinearLayout:RelativeLayout 通常可以减少布局的深度,但是在进行测量时候可能会进行多次测量,而 LinearLayout 只有在使用 weight 属性的时候会进行2此测量。

  3. 使用 Trace for OpenGL DDMS 中的工具可以跟踪每一帧的绘制。

  4. 使用 SysTrace 来进行性能检测

    • 除了在 DDMS 中还可以在命令行中吊起 $ python systrace.py --time=10 -o mytrace.html sched gfx view wm
    • 在Android 4.3 之后可以使用系统提供的 Trace 类来增加自定义Tag
  5. 使用TraceView
    • 通过TraceView可以得到单次执行最耗时的方法、知道执行次数最多的方法
  6. 内存类型:
    • VSS (Virtual Set Size)虚拟耗用内存 (包含共享库所占内存)
    • RSS (Resident Set Size)实际使用物理内存 (包含共享库所占内存)
    • PSS (Proportional Set Size)实际使用物理内存(比例分配共享库所占内存)
    • USS (Unique Set Size)进程独自占用物理内存(不包含共享库内存)

    一般 VSS >= RSS >= PSS >= USS

    共享内存是,Android基础公共库、组件、还有一些native library使用的内存,被所用进程共享。进程都是从Zygote进程fork出来的,新进程产生的时候就带有了 Shared 内存从而提高进程创建速度。

  7. GC系统:

    • 2.3 之前 GC 是同步发生的,是完整的 Heap 遍历。GC会打断应用的正常运行。
    • 2.3 之后 GC 是并发运行,GC 不会遍历 Heap 只是遍历一部分,但是多次 GC 后会产生内存碎片,一个连续的区域变小,可能会发生OOM。
    • 5.0 对 GC 进行了改进,加快了GC的清理速度,减少打断。GC 不仅清理,还会为大的对象分配地址,进行内存对齐
  8. 使用ActivityManager.MemoryInfo 可以了解内存情况,使用Debug.MemorInfo可以获取进程内内存使用情况。

  9. largehepe虽然可以增大使用内存,但是会减慢GC速度

  10. 获取更多内存方式:
    • 子进程
    • 使用Native Heap
    • 使用 OpenGL – OpenGl是将RAM的一部分作为显存使用,很多图像 APK 会把图片转为Texture来处理
    • largeheap
  11. 除了复写组件的 onLowMemory 来监听,也可以Context.registerComponentCallbacks(ComponentCallbacks callbacks) 就可以在任何地方监听

  12. onTrimMemory的警告级别
    • 运行时 – APP还能继续执行,APP处于前台
    • TRIM_MEMORY_RUNNING_MODERATE 第一级警告,系统即将准备执行LMK(低内存管理系统)
    • TRIM_MEMORY_RUNNING_LOW 第二级警告,内存接近LMK阈值
    • TRIM_MEMORY_RUNNING_CAITICAL 第三级警告,LMK能杀的background都杀了,马上要杀你了 * 缓存时 – APP 处于后台
    • TRIM_MEMORY_BACKGROUND LMK准备把你列为目标
    • TRIM_MEMORY_MODERATE LMK已经把你列为目标
    • TRIM_MEMOEY_COMPLETE LMK马上要杀你了 * TRIM_MEMORY_UI_HISSEN – UI元素被隐藏时候触发

    可以使用adb shell dumpsys gfxinfo packagename -cmd trim level 模拟警告级别,数值可以再ComponentCallbacks2.java中查到。

  13. 电量分析可以使用 https://github.com/google/battery-historian

  14. 综合测试工具:

    • 网易Emmagee https://github.com/NetEase/Emmagee/
    • 腾讯 GT https://github.com/TencentOpen/GT
    • Google AnotherMonitor https://github.com/AntonioRedondo/AnotherMonitor

第七章

  1. Google 搜索可以使用“+”、“-”、通配符、inurl:pdf、intitle等等。

  2. Proguard自动生成 https://proguard.herokuapp.com/

  3. gitignore自动生成 https://www.gitignore.io/

  4. gifgrabber mp4转gif软件

  5. Android资源生成网站 http://romannurik.github.io/AndroidAssetStudio/

  6. 在线shape生成 http://shapes.softartstudio.com/

  7. icon资源:

    • 阿里icon仓库 http://iconfont.cn/
    • easyIcon http://www.easyicon.net/
    • https://icons8.com/
  8. http://angrytools.com/ 设计合集

  9. https://material.uplabs.com/


分享