Mixin参考——Mixin Java系统属性
文章目录
下表汇总了Mixin支持的Java系统属性
,以启用各种调试和审计功能。将任何属性设置为true
以启用该选项:
系统属性 | 描述 |
---|---|
mixin.debug |
启用所有Mixin调试选项 |
mixin.debug.export |
export 调试选项使Mixin处理器为所有Mixin目标向磁盘导出混入后的字节码。字节码被输出到你的运行目录下的.mixin.out 文件夹下的典型包/类结构中。
将Fernflower的jar放在运行时类路径上时也会导致这些类文件被反编译。 |
mixin.debug.export.filter |
导出过滤器,如果为缺省值,允许导出所有转换的类。如果指定值,则作为要导出的类名的过滤器,并且只导出匹配的类。这在使用Fernflower时非常有用,否则导出可能非常慢。允许使用以下通配符。
|
mixin.debug.export.decompile |
如果设置为false,即使在类路径上找到Fernflower,也会禁用它。 |
mixin.debug.export.decompile.async |
在单独的线程中运行Fernflower。一般来说,这将使导出对启动耗时的影响降低(反编译通常会增加大约20%的加载时间),同时注意崩溃可能导致导出未反编译。 |
mixin.debug.verify |
verify 选项在混入后的字节码上运行ASM的CheckClassAdapter 以检查是否正确应用了Mixin转换。此选项仅用于Mixin库,不建议在Mixin的常规调试期间启用。 |
mixin.debug.verbose |
verbose 选项将Mixin处理器生成的所有DEBUG 级别日志消息提升到INFO 级别,以便在运行时将它们发送到控制台。当使用Mixin开发时,这是一个非常有用的选项,因为它允许对Mixin应用进程进行更交互式的监控。 |
mixin.debug.countInjections |
将失败的注入提升到错误状态。详细信息请参见Inject.expect 。 |
mixin.debug.strict |
启用严格检查。 |
mixin.debug.strict.unique |
如果为false(默认值),Unique公共方法仅在遇到问题时发出警告,不会合并到目标中。如果为true,则会抛出异常。 |
mixin.debug.strict.targets |
启用对Mixin目标的严格检查。 |
mixin.debug.profiler |
为所有Mixin操作启用性能分析器(通常仅在Mixin准备操作期间启用)。 |
mixin.dumpTargetOnFailure |
有时,Mixin会失败,并显示一条神秘的消息,例如目标中不存在影子目标,或其他意外错误,这表明目标类未处于特定Mixin预期的状态。有时,这可能是因为另一个转换器正在以Mixin转换器无法预料的方式对字节码进行转换,或者目标类发生了其它意外的更改。启用此选项会导致InvalidMixinException 和其他运行时Mixin错误,从而将传入的(未经混入的)类字节码转储到磁盘。这可以使用javap 或其它Java反汇编程序检查目标类字节码,以确定不匹配的原因。 |
mixin.checks |
启用所有Mixin检查操作 |
mixin.checks.interfaces |
启用接口实现审计模式。启用此模式后,Mixin处理器将为每个应用的Mixin输出一个审计报告,该报告提供了由类方法声明但未由类或任何超类实现的接口方法的摘要,实际上,那些方法在被调用时会导致抛出 报告被生成到 |
mixin.checks.interfaces.strict |
如果启用了接口检查,“严格模式”(默认)会将实现检查应用于抽象目标类。将此选项设置为false 会导致在生成实现报告时跳过抽象目标。 |
mixin.ignoreConstraints |
禁用约束检查,将违反约束的情况从致命错误降级为仅输出警告。用于开发或out-of-band目标的in-the-wild测试 |
mixin.hotSwap |
启用热插拔代理。 |
mixin.env |
环境设置的父级。实际上并不是一个设置。总是为false 。 |
mixin.env.obf |
在必要时强制指定refmap的混淆类型。总是为false 。 |
mixin.env.disableRefMap |
在必要时禁用refmap。 |
mixin.env.remapRefMap |
你可能希望在运行时重新映射现有的refmap,而不是禁用refmap。这可以通过设置此属性,并为mixin.env.refMapRemappingFile 和mixin.env.refMapRemappingEnv 属性设置值实现。不过,如果通过GradleStart 启动,则可以忽略这些属性(如果通过GradleStart加载,此属性也会自动启用)。 |
mixin.env.refMapRemappingFile |
如果启用mixin.env.remapRefMap,则可以使用此设置覆盖从文件中读取的SRG文件名。映射的源类型必须为searge 且目标类型必须与当前的开发环境相匹配。 如果源类型不是searge ,那么mixin.env.refMapRemappingEnv 应设置为正确的源环境类型。 |
mixin.env.refMapRemappingEnv |
使用mixin.env.refMapRemappingFile 时,此设置将覆盖默认源环境(searge)。但是请注意,指定的环境类型必须存在于原始refmap中。 |
mixin.env.ignoreRequired |
全局忽略所有配置的required 属性。 |
mixin.env.compatLevel |
操作时的默认兼容性级别。 |
mixin.env.shiftByViolation |
在Mixin中超过At.by所定义的最大值时的行为。当前行为是warn . 在Mixin的更高版本中,这可能会升级为error .
此选项的可用值包括:
|
mixin.initialiserInjectionMode |
初始化注入的行为,当前支持的选项有default 和safe 。 |