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

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

源码分析的书
操作系统内容学习路线
Android特性依赖底层基础系统
底层基础系统依赖
深入了解Linux系统相关知识
《操作系统之编程观察》
《计算机系统 系统架构与操作系统的高度集成》
《深入理解计算机系统》
从理解操作系统概念开始
Linux 2.6.x内核
算法说明
系统源码
Try Catch Block对操作数栈的影响
配合javap命令查看反编译的字节码对应的源码
字节码的执行规则和指令说明
ASM框架
阅读别人实现的Gradle工具代码
Android Gradle Plugin的封装扩展
AOP的另一种实现方式:Dex文件进行Dalvik bytecode字节码注入
移植TraceTag类到其他项目
Gradle插件发布到本地Maven库
使用ASM框架进行字节码处理
借助systrace工具
Linux学习方法和建议
文件顺序对I/O的影响
课后练习Sample的运行注意事项
Linux学习建议
预读机制
字节码处理
Gradle学习困难
Sample实现
专栏第7期和第8期
孙鹏飞
热点问题答疑第4期

该思维导图由 AI 生成,仅供参考

你好,我是孙鹏飞。今天我们回到专栏第 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
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文主要涵盖了热点问题答疑第4期的内容,作者孙鹏飞回顾了专栏第7期和第8期的课后练习Sample的运行注意事项,并结合同学们的疑问,讨论了文件顺序对I/O的影响以及关于Linux学习的方法和建议。文章详细介绍了Sample的实现原理,包括Gradle插件的发布、字节码处理、AOP的另一种实现方式等。此外,还提到了Linux预读机制的算法和相关资料,以及对Android开发工程师学习Linux的建议和学习路线。作者强调了深入了解Linux系统相关知识的重要性,以及如何从操作系统概念开始学习。最后,作者分享了自己的学习经验和学习路线,并鼓励读者留言分享交流。整体而言,本文涵盖了技术实现细节和学习方法建议,适合对Android开发和Linux系统感兴趣的读者阅读学习。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Android 开发高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

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

    作者回复: 感谢告知

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