Android Realm 版本升级错误与 gradle

标签 android android-gradle-plugin realm build.gradle

我们正在开发一个带有 SDK 的 android 应用程序。 SDK 是应用程序的模块。我们仅在 SDK 中使用 Realm(目前)。我添加的关于 Realm 的唯一 gradle 文件是 sdk build.gradle 文件。我在文件顶部添加了 apply plugin: 'realm-android'

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath "io.realm:realm-gradle-plugin:0.90.1"
    } 
}

在文件的底部。在我们尝试升级到最新版本 (1.1.0) 之前,一切都在正常编译和工作。

如果我将版本更改为 1.0.0 或更高版本,它不会编译。这里有一些错误日志: Gradle 控制台:

Note: Processing class TransactionUpdateAPICall
Note: Processing class Address
Note: Creating DefaultRealmModule
PersistentDataManager.java:134: error: no suitable method found for    findAllSorted(String,Sort,String,Sort,String,Sort)
            objects = query.findAllSorted(sorts.get(0).fieldName,sorts.get(0).dir,sorts.get(1).fieldName,sorts.get(1).dir,sorts.get(2).fieldName,sorts.get(2).dir);
                           ^
method RealmQuery.findAllSorted(String,Sort) is not applicable
  (actual and formal argument lists differ in length)
method RealmQuery.findAllSorted(String) is not applicable
  (actual and formal argument lists differ in length)
method RealmQuery.findAllSorted(String[],Sort[]) is not applicable
  (actual and formal argument lists differ in length)
method RealmQuery.findAllSorted(String,Sort,String,Sort) is not applicable
  (actual and formal argument lists differ in length)
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Messages 窗口还显示来自 Gradle 构建的一些错误消息:

Error:(134, 32) error: no suitable method found for          findAllSorted(String,Sort,String,Sort,String,Sort)
method RealmQuery.findAllSorted(String,Sort) is not applicable
(actual and formal argument lists differ in length)
method RealmQuery.findAllSorted(String) is not applicable
(actual and formal argument lists differ in length)
method RealmQuery.findAllSorted(String[],Sort[]) is not applicable
(actual and formal argument lists differ in length)
method RealmQuery.findAllSorted(String,Sort,String,Sort) is not applicable
(actual and formal argument lists differ in length)
Error:Execution failed for task ':sdk:compileReleaseJavaWithJavac'.
> Compilation failed; see the compiler error output for details.*

如果我创建示例应用程序并将 Realm(最新版本)添加到应用程序 gradle 构建文件中,它就可以工作。问题在于 SDK 模块中使用的 Realm 。

如果您已经遇到过一些类似的问题并已解决,或者知道哪里出了问题,请分享。我们将不胜感激。

提前致谢。

编辑:

解决方法是我必须对所有使用过的弃用方法进行注释,然后再进行编译。编译器将所有 Realm 对象显示为缺失。一旦弃用的方法被注释掉,构建就成功了。

最佳答案

Realm从olds verson5+的主要升级需要从:

realm.where(example.class)
    .findAllSorted("field")

收件人:

realm.where(example.class)
    .sort("field")
    .findAll();

关于Android Realm 版本升级错误与 gradle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38575533/

相关文章:

android - 如何在 SurfaceView 上实现项目触摸

android - 跨平台正确的 Android 选项卡外观?

android - java.lang.NoClassDefFoundError : com. github.julman99.gsonfire.GsonFireBuilder 问题

ios - 加载 View 后将重复数据添加到 REALM

javascript - Realm-js 和 Node.js : exception during login to Realm Object Server

android - 基于动态类型获取 Realm 数据

android - 在运行时删除 Surface

android - 如何使用在函数内设置的匿名监听器测试类?

android - 没有构建器可用于构建 'org.jetbrains.plugins.gradle.model.internal.DummyModel' 类型的模型

Android:为什么在 Gradle 中签名配置需要明确的密码?