XXResGuard二开踩坑记
AabResGuard二开踩坑记 项目地址:https://github.com/bytedance/AabResGuard Could not find org.codehaus.groovy.modules.http-builder:http-builder:0.7.2. 导入项目sync提示Could not find org.codehaus.groovy.modules.http-build...
AabResGuard二开踩坑记 项目地址:https://github.com/bytedance/AabResGuard Could not find org.codehaus.groovy.modules.http-builder:http-builder:0.7.2. 导入项目sync提示Could not find org.codehaus.groovy.modules.http-build...
内存快照解析 说到内存泄露,Android一直绕不开的就是LeakCanary,对于内存快照的解析,使用的Shark: Smart Heap Analysis Reports for Kotlin。 Shark主要由shark,shark-android,shark-graph,shark-hprof等模块组成 其中各个模块...
为什么会TransactionTooLargeException Activity/Fragment之间通过Bundle传递的参数过大导致,可能出现在启动界面或者界面开始保存数据onActivitySaveInstanceState/onFragmentSaveInstanceState中 如何判断Bundle的大小以及参数的大...
查看单个 App 进程的内存信息 adb shell dumpsys meminfo <pid> // 输出指定pid的某一进程 adb shell dumpsys meminfo --package <packagename> // 输出指定包名的进程,可能包含多个进程 adb shell dumpsys meminfo com....
ASM ASM是一个字节码处理框架,只要是做代码插桩,都离不开这个库,使用方式上有两种,一个是tree api,一个是core api,引入方式如下 implementation 'org.ow2.asm:asm:9.7.1' core api core api主要是使用的访问者涉及模...
通过adb命令 获取pid ps -A | grep 应用包名 获取进程信息 adb shell cat /proc/[获取pid]/status 当然也可以使用ps命令查看 ps -T -p [pid] top自动更新线程信息 top -H -p [pid] 通过代码获取 object ThreadUtils { fun ge...
前言 在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://...