Android 开发高手课
张绍文
前微信高级工程师,Tinker 负责人
52202 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 62 讲
导读 (1讲)
模块一 高质量开发 (25讲)
Android 开发高手课
15
15
1.0x
00:00/00:00
登录|注册

练习Sample跑起来 | 热点问题答疑第4期

你好,我是孙鹏飞。今天我们回到专栏第 7 期和第 8 期,来看看课后练习 Sample 的运行需要注意哪些问题。另外我结合同学们留言的疑问,也来谈谈文件顺序对 I/O 的影响,以及关于 Linux 学习我的一些方法和建议。
专栏第 7 期的 Sample 借助于 systrace 工具,通过字节码处理框架对函数插桩来获取方法执行的 trace。这个 Sample 实现相当完整,你在日常工作也可以使用它。
这个 Sample 使用起来虽然非常简单,但其内部的实现相对来说是比较复杂的。它的实现涉及 Gradle Transform、Task 实现、增量处理、ASM 字节码处理、mapping 文件使用,以及 systrace 工具的使用等。
对于 Gradle 来说,我们应该比较熟悉,它是 Android 平台下的构建工具。对于平时使用来说,我们大多时候只需要关注 Android Gradle Plugin 的一些参数配置就可以实现很多功能了,官方文档已经提供了很详细的参数设置说明。对于一些需要侵入打包流程的操作,就需要我们实现自己的 Task 或者 Transform 代码来完成,比如处理 Class 和 JAR 包、对资源做一些处理等。
Gradle 学习的困难更多来自于 Android Gradle Plugin 对 Gradle 做的一些封装扩展,而这部分 Google 并没有提供很完善的文档,并且每个版本都有一些接口上的变动。对于这部分内容的学习,我主要是去阅读别人实现的 Gradle 工具代码和Android Gradle Plugin 代码
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Android 开发高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • X
    文中有个笔误:“SampleApp 中其 p 的 e.systrace.TraceTag" 这句话我推测应该是"com.sample.systrace.TraceTag",同学们移植时要确保TraceTag的路径为com.sample.systrace.TraceTag,否则会报NoClassDefFoundError的。

    作者回复: 感谢告知

    3
    2
  • SunnyBird
    很棒 谢谢老师
    1
  • yuanyuan
    生成的trace html显示 activityStart(Did Not Finish) com.sample.systrace.MainActivity.onCreate.(Landroid.os.Bundle;)V(Did Not Finish), 实际上onCreate早运行完成了,感觉Trace一直卡在onCreate(),我自己手动插桩就是正常的,请问这是什么原因?
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部