gradle在build时时如何知道要去扫描Realm相关的数据模型类的?

gradle在build时时如何知道要去扫描Realm这些数据模型类的?因为这个类继承了子类RealmObject?

deepseek回答:
Realm 在编译时扫描 HDCoinBean 类主要通过以下机制实现:


1. 注解处理器触发扫描

当类继承 RealmObject 或使用 @RealmClass 注解时,Realm 的注解处理器(realm-annotations-processor)会自动识别并处理这些类。关键触发点:

  • 继承关系检测extends RealmObject 会触发 Realm 的类扫描
  • 注解标记@PrimaryKey 等注解明确指示该类需要被处理

2. **KAPT 处理流程

build.gradle 中配置的 Realm 插件会注册注解处理器:

apply plugin: 'realm-android' // 自动注册注解处理器

编译时流程:

  1. KAPT 阶段:扫描所有带 @RealmClass 或继承 RealmObject (即extends RealmObject)的类
  2. 代码生成:为每个模型类生成 RealmProxy 类(如 HDCoinBeanRealmProxy.java
  3. 元数据收集:生成 DefaultRealmModule 包含所有模型类信息

3. **自定义模块控制

若要限制扫描范围,需显式定义 RealmModule

@RealmModule(classes = [HDCoinBean::class]) // 只包含指定类
class CustomModule

并在初始化时指定:

Realm.init(this)
val config = RealmConfiguration.Builder()
    .modules(CustomModule())
    .build()

4. **验证扫描结果

查看构建生成的中间文件:

app/build/generated/source/kapt/debug/io/realm/HDCoinBeanRealmProxy.java

若存在该文件,说明类已被成功扫描处理。


关键点总结

  • 继承 RealmObject 是主要触发条件
  • 注解处理器通过 KAPT 实现自动化扫描
  • 可通过自定义模块精准控制扫描范围
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值