android - Realm 梯度任务

标签 android realm

在我对 assembleDebug gradle 任务的分析报告中,我发现了两个 Realm 相关的 gradle 子任务,它们花费了大量时间:

assembleDebug - 1m21.44s
- transformClassesWithRealmOptionalAPITransformerForDebug - 22.386s
- transformClassesWithRealmTransformerForIdeDebug - 10.062s

问题:

  • 那些 Realm 相关的 gradle 子任务到底是做什么的?我可以在某个时候跳过它们吗?
  • 为什么他们花了这么长时间? (22 + 10 = 32 秒)

更新

作为解决方法,我通过 -x 脚本参数跳过任务

assembleDebug -x transformClassesWithRealmOptionalAPITransformerForDebug

最佳答案

transformClassesWithRealmOptionalAPITransformerForDebug 是为删除 RxJava 相关 API 而创建的,因为它可能会在某些情况下(需要反射的情况,如 https://realm.io/docs/java/latest/#jackson-databind )产生麻烦,而 RxJava 依赖。但我们发现它在某些场合表现不佳,例如https://github.com/realm/realm-java/issues/3033。和 https://github.com/realm/realm-java/issues/3022 .所以它将在 v1.0.1 之后的下一个版本中被禁用。

transformClassesWithRealmTransformerForIdeDebug 是 Realm 依赖的核心部分。基本上,它通过字节码操作将对 RealmObject 的字段访问替换为 Realm 访问器。你可以看到这个post了解更多详情。因此,不能跳过此任务。

附言。一个issue是为了跟踪变压器速度的改进而创建的。

关于android - Realm 梯度任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37928953/

相关文章:

ios - 如何在 Realm 中实现继承(iOS、Objective C)

ios - Realm 是否具有相当于 fetchResultsController 的 .NSFetchedResultsChangeMove :

android - 使用 webrtc 在 native Android 应用程序中共享屏幕

android - 通过集合中提供的 ID 在 Realm 中查询对象

android - Volley 加载相同的缩略图

java - 如何沿着特定轨迹放置物体?

linq - Realm Xamarin LINQ 对象

ios - Realm 数据库 Swift 3.1 的设计模式 - 单例

android - RecyclerView notifyItemInserted 复制了之前条目的数据

android - 运行我的第一个 android 程序时出现问题