1、线程检测
Infer 静态分析框架,一种新的静态分析器,它可以在 Android 的 Java 代码中捕获死锁,而无需运行代码。
JDK内置工具Jstack,Jconsole。
2、代码静态检测
idea阿里代码规范插件,findbugs,checkstyle, 单测质量snar工具,JDepend,
Infer的核心目标memory safety,早期主要采用基于separation logic的shape analysis(分析pointer, list, tree等memory相关等)。
PMD能够扫描Java 源代码,查找类似以下的潜在问题:
-
可能的bug——try/catch/finally/switch语句中返回空值。
-
死代码——未使用的局部变量、参数、私有方法。
-
不理想的代码——使用String/StringBuffer。
-
过于复杂的表达式——没有必要使用if语句、while循环可以代替for循环。
-
重复代码——复制/粘贴的代码引发的bug。
Macker是一个适用于Java开发人员用来检查架构规则的工具。你可以定制一个适合特定项目架构的规则文件,也可以为您的代码撰写通用的规则说明
XRadar是一个开放的、为代码生成可扩展报告的工具。目前支持基于Java的所有系统。批量处理的框架可以用来生成HTML/SVG系统的报告。Xradar可以估量代码的大小、复杂性以及代码的重复性、依赖性等。
Hammurapi是一款执行Java程序代码的自动检测工具。提供的实例中含有282条Hammurapi代码规则,提供了120多个Java类,这款所谓的检测工具,可以从三个级别来检测代码是否违背了编码标准。
3、AOP工具
AspectJ,javassist,ASM
4、测试框架
Junit4、5、Espresso、自动化框架Appium、自动化框架uiautomator、UI测试Robotium
5、性能分析工具
BlockCanary卡顿分析
LeakCanary内存泄露分析
IOCanary io分析
TraveView是Android studio集成的一个性能优化工具
hierarchyviewer:检测布局复杂度
友盟+u-apm应用性能监控平台”作为一款监测工具
Bugly异常收集
CrashWoodPecker异常收集
XCrash
KOOM
滴滴开源的APM方案Dokit
对于开发者来说,Android的Java 层 提供了两种开发者可直接调用的 Method Trace 的API,一是 android.os.Debug类中的 startMethodTracing相关API,第二个 是android.os.Trace 类中的beginSection相关AP。 这两者的区别是 Debug类只能监控 Java函数调用, 而Trace类底层是使用 atrace 实现,其追踪的函数会包含了应用及系统的Java 和Native函数,并且底层基于ftrace还可以追踪cpu的详细活动信息。
6、网络分析
fiddler或charles
开源模块-JustTrustMe
HttpCanary Android网络分析工具HttpCanary
7、安全分析
reFlutter是一款功能强大的逆向工程分析工具
8、数据读写
SP、DataStore、MMKV、加密SQLCipher、
9、ORM
Room、GReenDAO
11、网络库
Okhttp、Retrofit
12、事件库
EventBus,otto,RxAndorid
13、架构设计
官方databinding,Dragger2,Butterfly
14、路由管理
ARout,DRout
15、图片管理
Fresco、ImageLoader、 Picasso、 Glide
16、动画
nineoldandroids ,lottie
17、加固混淆
andresguard
18、加速优化
Redex优化dex大小及加载顺序
19、热更新
阿里系包括AndFix、Dexposed、阿里百川、Sophix
Robust、Tinker
https://www.csdn.net/tags/MtjaAgysMzkwNi1ibG9n.html
20、插件化
特性 | DynamicLoadApk | DynamicAPK | Small | DroidPlugin | VirtualAPK | RePlugin | ACDD/Atlas |
支持四大组件 | 只支持Activity | 只支持Activity | 只支持Activity | 全支持 | 全支持 | 全支持 | 全支持 |
组件无需在宿主manifest中预注册 | ✓ | × | ✓ | ✓ | ✓ | ✓ | × |
插件可以依赖宿主 | ✓ | ✓ | ✓ | × | ✓ | 轻度依赖 | ✓ |
支持PendingIntent | × | × | × | ✓ | ✓ | ✓ | 未明确 |
Android特性支持 | 大部分 | 大部分 | 大部分 | 几乎全部 | 几乎全部 | 几乎全部 | 未明确 |
兼容性适配 | 一般 | 一般 | 中等 | 高 | 高 | 高 | 未明确 |
插件构建 | 无 | 部署aapt | Gradle插件 | 无 | Gradle插件 | Gradle插件 | 部署aapt |
框架轻重 | 相对轻量 | 相对轻量 | 相对轻量 | 重量 | |||
支持安卓版本 | API Level 15+ | API Level 9+ | |||||
接入难度 | 中 | 易 | 难 | ||||
侧重阶段 | 运行期 | 运行期 | 运行期 | 编译期 | |||
热修复能力 | 无 | 无 | 无 | 无 | 无 | 无 | 有 |
插件安装后可否删除 | 不能 | 不能 | 可以 | ||||
插件更新方式 | 插件独立更新 | 插件独立更新 | 插件及宿主须同时更 |
21 字节码查看工具
1、Javap
2、classPy