Gradle Plugin开发基础-Transform
前言 在Gradle Plugin开发基础流程中介绍了如何创建我们自己的插件工程,这次来介绍下如何使用Transform配合ASM进行插桩。使用 AGP Transform API 进行字节码插桩已经非常普遍了,例如 Booster、神策等框架中都有 Transform 的影子。T...
前言 在Gradle Plugin开发基础流程中介绍了如何创建我们自己的插件工程,这次来介绍下如何使用Transform配合ASM进行插桩。使用 AGP Transform API 进行字节码插桩已经非常普遍了,例如 Booster、神策等框架中都有 Transform 的影子。T...
1、动态显示隐藏图标 通过xml配置,如下 <?xml version="1.0" encoding="utf-8"?> <resources> <bool name="leak_canary_add_launcher_icon">false</bool> </resources&g...
前言 因为fresco库没有自动根据控件大小裁剪图片,所以需要手动监控是否存在大图 实现 通过lancet框架进行插桩 @Insert("reportSuccess") @TargetClass("com.facebook.drawee.controller.AbstractDraweeController&quo...
前言 在https://27house.cn/archives/2396中已经介绍了,使用WeakReference可以与ReferenceQueue来判断是否执行了GC。按照这个理论,当GC的时候,就可以检测一下Activity是否泄露! 实现 代码如下所示,其中GcMonitor的代码在https://...
WeakReference 在文章https://27house.cn/archives/2079中介绍了4种引用类型,其中WeakReference可以与ReferenceQueue来判断对象是否回收。那么其实我们可以使用此方法来监听系统是否进行了GC WeakReference监听GC 如下所示,通过添加...
Matrix源码分析 卡顿监控原理 替换主线程Looper的Printer,从而监控dispatchMessage的执行时间,源码可以查看com/tencent/matrix/trace/core/LooperMonitor.java 具体可以查看公众号里面微信团队的解析 通过监控dispatchMessage的执行...
crontab命令 crontab -e //编辑模式 crontab -l //列出当前的配置 crontab -r //删除定时的任务配置 注意事项 当有问题的时候,控制台会输出一条You have mail in /var/mail/xxxx,使用cat /var/mail/xxxx即可获取输出信息 运行python...
Google服务封装好的sdk地址 https://github.sheincorp.cn/googleapis/google-api-java-client-services/tree/main/clients Google服务使用之前得先认证 implementation 'com.google.auth:google-auth-library-oauth2-http:1.19.0...
根据官方文档:https://developer.android.com/topic/performance/memory?hl=zh-cn#kotlin import android.content.ComponentCallbacks2 // Other import statements. class MainActivity : AppCompatActivity(), ComponentCallbacks2...
区块格式化上下文(Block Formatting Context,BFC)是 Web 页面的可视 CSS 渲染的一部分,是块级盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。 BFC解决的问题 元素开启 BFC 后,其子元素不会再产生 margin 場陷问...