千万级应用美团robust修复原理手写字节码插件技术_第1页
千万级应用美团robust修复原理手写字节码插件技术_第2页
千万级应用美团robust修复原理手写字节码插件技术_第3页
千万级应用美团robust修复原理手写字节码插件技术_第4页
千万级应用美团robust修复原理手写字节码插件技术_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《android移动互联网高级开发》AndroidVip正式课用代码码出自己牛逼的人生码牛学院代码成就人生android移动互联网高级开发码牛学院-用代码码出精彩的人生码牛学院Android讲师介绍David复旦大学工程硕士,原Oppo资深研发工程师,网易特邀Android讲师,专注技术十年,产品控、代码控,拥有丰富的项目经验,主持研发了多个成功上线的大型互联网项目。热爱互联网,热衷于各种Android底层技术,精通NDK架构和前端开发,擅长移动互联网高并发、可维护性架构设计,有丰富的实战经验。愿意和他人分享自己对技术的理解和感悟,讲课逻辑清晰,生动幽默。River《Android开发入门与实战第二版》作者之一,《NFC:Arduino、Android与PhoneGap近场通信》译者,国内首批Android开发,曾任职于银联,华夏幸福等知名公司,擅长项目重构,架构,以及性能优化,拥有多年的项目开发以及管理经验,原网易特邀Android讲师。授课风格幽默风趣,有激情,注重站在学员的角度考虑问题。Zee中南大学计算机信息专业毕业,前新浪架构师,58同城项目负责人。8年Android行业从业经验,丰富的项目研发以及管理经验,原网易特邀Android讲师,对架构方面有深入的研究。授课激情有活力,能耐心帮助学员解决项目中遇到的问题。David老师QQ:1051917835千万级应用美团Robust修复原理javassist字节码插件技术码牛学院-用代码码出牛逼人生今晚课题目录COMPANY01美团robust修复详解03

apk编译原理,groovy实现动态插入代码02robust依赖的插件实现方式04自己实现robust插件,动态改动主工程代码01今晚开启你的瓶颈----------坐上老司机的车,带你稳稳的走上秋明山课程安排01Javassist介绍(动态编译)020304手写Class字节码手术刀ClassPool字节码池AndroidApk编译原理课程小结美团热修复介绍课程小结JavaSsist介绍定义:javassist也称为动态编译,动态编译技术通过操作Java字节码的方式在JVM中生成class字节码中动态添加元素或修改代码,发生在Class字节码生成后(打包成dex之前,编译时之后),也称为Class字节码手术刀动态编程解决什么问题?动态修改编译后的Class字节码实现了对APP实现了修改的无限可能1组件化2热修复3增量升级4AndroidStudio插件课程小结动态编程解决什么问题?动态修改编译后的Class字节码实现了对APP实现了修改的无限可能1组件化2热修复3增量升级4AndroidStudio插件Groovy工程编写打开src/main目录,修改java文件名称为groovysrc/main下,仅保留groovy文件夹,删除其他文件夹删除无用的libs文件夹、文件Groovy配置文件打开src/main目录,修改java文件名称为groovysrc/main下,仅保留groovy文件夹,删除其他文件夹删除无用的libs文件夹、文件ClassPool详解ClassPool称为字节码容器池ClassPool是缓存Class字节码对象的容器,所有的Class字节码对象都在ClassPool中。CtClass对象很多时,ClassPool会消耗很大的内存,为了避免内存的消耗,创建ClassPool对象时可以使用单例模式,或者对于CtClass对象,调用detach方法将其从ClassPool中移除编译原理右图是谷歌官网给出的一个典型的apk构建的过程,概括为两个过程,编译过程,编译的内容包括本工程的文件以及依赖的各种库文件,编译的输出包括dex文件和编译后的资源文件。打包过程。配合Keystore对第一步的输出进行签名对齐,生成最终的apk文件。Transform详解从android-build-tool:gradle:1.5开始,gradle插件包含了一个叫Transform的API,这个API允许第三方插件在class文件转为为dex文件前操作编译好的class文件,理解:内部暴露出一个修改的接口,供开发者使用Transform责任链每个Transform其实都是一个gradletask,Android编译器中的TaskManager将每个Transform串连起来原生就带了一系列Transform比如transformClassesWithDexBuilderForDebugtransformDexArchiveWithDexMergerForDebugtransformNativeLibsWithMergeJniLibsForDebugtansformResourcesWithMergeJavaResForDebugTransform编写(我们首先先定义一个自定义的Transform,需要实现如下方法。)从android-build-tool:gradle:1.5开始,gradle插件包含了一个叫Transform的API,这个API允许第三方插件在class文件转为为dex文件前操作编译好的class文件,理解:内部暴露出一个修改的接口,供开发者使用Transform编写(我们首先先定义一个自定义的Transform,需要实现如下方法。)Transform每个方法分析@OverrideStringgetName(){returnNAME}Name顾名思义,就是我们的Transform名称,再回到我们刚刚Build的流程里:Transform每个方法分析Set<QualifiedContent.ContentType>getInputTypes(){returnTransformManager.CONTENT_CLASS}注释写的很清晰了,必须是CLASSES(0x01),RESOURCES(0x02)之一,相当于Transform需要处理的类型。Transform方法getScopes分析Set<?superQualifiedContent.Scope>getScopes(){returnTransformManager.SCOPE_FULL_PROJECT}先来看源码注释,这个的作用相当于用来Transform表明作用域叮当老师的QQ:1979846055课程配套服务01.答疑服务专门的答疑老师替学员解答问题01.学习计划1V1为你定制专属的学习计划01.考核与作业考核与作业意义在于理论与实践并行01.专属班级专属班级打开你的人际交流圈01.新技术分享时刻关注国际市场新技术的动态,分享给学员01.就业指导简历指导和面试指导并行,让你的岗位不侮辱你的能力01.企业内推众多一线企业的内推岗位等你拿01.升级更新最新技术一直免费学01.钱程无忧Toppro优先权,告别死工资01.涨薪无忧毕业不满三年的学员学完课程不涨5K,全额退款码牛学院-用代码码出牛逼人生Android高级UI注:贝塞尔曲线,动画,布局原理不仅仅只是Android上可以使用,其他语言在实现这些效果时大同小异; UI概述1:UI绘制流程2:事件分发机制3:Paint/贝塞尔曲线4:动画源码,进阶5:屏幕适配6:项目实战码牛学院-用代码码出牛逼人生Android高级架构师注:架构不管在哪门语言都是需要的,架构不单单是代码,更是思路;

架构概述1:设计原则/模式

2:Framework/启动等源码分析3:Google最新推出的组件4:常见第三方框架分析手写码牛学院-用代码码出牛逼人生Android

NDK深层进阶注:4G时代出来了抖音等大量音视频应用,5G时代必然会涌现更多的需要大数据量的应用,NDK的学习迫在眉睫;而C/C+语言也将成为加密/防反编译的趋势; NDK概述1:C/C++基础/进阶

2:脚本语法/Linux基础3:音视频4:WebRtc/OPENGL5:项目实战码牛学院-用代码码出牛逼人生Android性能优化注:当应用开发不再有技术难题,如何保证App在大量用户下依然稳定,高效,无惧“大数据”的冲击,性能优化无疑是最大利器,更是你能一直跟随前进的脚步;

性能优化概述1:UI/启动优化2:稳定性3:内存/电量4:安全性5:附加项目实战优化码牛学院-用代码码出牛逼人生Android其他注:当app所有技术难题不再是问题,如何自动化编译打包,混合式开发,小程序等新技术也需要有所涉猎;

其他概述1:Gradle

2:Flutter3:小程序4:项目实战Toppro不再仅限于“死工资”,技术价值最大化。5k服务1-3年工作经验的人学习完本课程未涨5k,全额退费。技术凡是基于Android平台的应用开发都不再有技术壁垒。人脉不管是公司还是Toppro都有机会,能力接触到更高端的圈子,增加新的机遇。Toppro5k服务技术人脉良性循环学完本高级课程未加薪5k,全额退费1Andro

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论