通过插件去除Kotlin混淆去除 @Metadata标记

在Kotlin中,Metadata是指描述Kotlin类的元数据。它包含了关于类的属性、函数、注解和其他信息的描述。Metadata的作用主要有以下几个方面:

  • 反射:Metadata可以用于在运行时获取类的信息,包括类的名称、属性、函数等。通过反射,我们可以在运行时动态地访问和操作类的成员。

  • 序列化和反序列化:Metadata可以用于将类的信息转换为字节流并进行存储或传输。这样就可以将类的状态保存下来,以便在需要时进行恢复或重建。

  • 虚拟机优化:Metadata中的信息可以帮助虚拟机进行优化,例如对类的成员进行内联、优化函数调用等。这样可以提高程序的性能和效率。

如:

复制代码
@Metadata(
  mv = {1, 1, 9},
  bv = {1, 0, 2},
  k = 1,
  d1 = {"..."},
  d2 = {"Lcom/bennyhuo/kotlinspecifics/reflect/SubClass;", "Lcom/bennyhuo/kotlinspecifics/reflect/SuperClass;", "()V", "Companion", "production sources for module app"}
)

public final class SubClass extends SuperClass {
   ...
}

但是这些内容会暴漏一些信息

使用 https://github.com/oliver-jonas/unmeta 插件,能够在打包时移除class中的Metadata标签信息

目前尝试的是将本地项目移动到unmeta项目进行发布aar的方式,是可以使用的。

相关推荐
Lei活在当下6 小时前
【项目踩坑实录】并发环境下,Glide缓存引起的图片加载异常
android·debug·glide
my_power5209 小时前
检出git项目到android studio该如何配置
android·git·android studio
三少爷的鞋11 小时前
Repository 方法设计:suspend 与 Flow 的决选择指南(以朋友圈为例)
android
阿里云云原生12 小时前
Android App 崩溃排查指南:阿里云 RUM 如何让你快速从告警到定位根因?
android·java
cmdch201714 小时前
手持机安卓新增推送按钮功能
android
攻城狮201514 小时前
【rk3528/rk3518 android14 kernel-6.10 emcp sdk】
android
何妨呀~14 小时前
mysql 8服务器实验
android·mysql·adb
QuantumLeap丶15 小时前
《Flutter全栈开发实战指南:从零到高级》- 25 -性能优化
android·flutter·ios
木易 士心17 小时前
MVC、MVP 与 MVVM:Android 架构演进之路
android·架构·mvc
百锦再17 小时前
国产数据库的平替亮点——关系型数据库架构适配
android·java·前端·数据库·sql·算法·数据库架构